2017-01-02 2 views
-1

Я просто пытаюсь создать список стран. Я использовал restcountries API, чтобы получить страну. Я не могу разобрать ответ JSON. Так как ответ содержит специальные символы. Таким образом, я использовал JSONEncoder и мой код ниже:Невозможно проанализировать данные из ответа JSON в python

import requests 
import sys 
import ast 
import json 

url = 'https://restcountries.eu/rest/v1/name/united' 
r = requests.get(url) 
a = r.json() 

мне нужен результат, как этот a[0]. Если я печать непосредственно, получая ошибку, как показано ниже

enter image description here

b = json.JSONEncoder().encode(a) 
print(b) 

это print(b) работает нормально. Но, не удалось получить b[0]. Я новичок в python. Пожалуйста, помогите мне, если что-нибудь не так, и извините за мое плохое общение.

+0

Что ты здесь делаешь? Почему вы получаете декодированный JSON, а затем перекодируете его? Это не имеет никакого смысла. –

+0

@ DanielRoseman расшифрованный JSON генерирует ошибку как UnicodeEncodeError: кодек 'charmap' не может кодировать символ '\ xce' в позиции 28 4: символьные карты до . Для этого я снова перекодирую – Nisar

+0

* Что * дает вам эту ошибку? Покажите, что именно вы сделали, и полную трассировку. –

ответ

3

Что это делает?

json.JSONEncoder().encode(a) 

Return a JSON string representation of a Python data structure

Но что вы имеете в a? JSON. Что вы пытаетесь получить доступ к элементу словаря, который является частью массива JSon

все, что вам нужно, это

r = requests.get(url) 
a = r.json() 
print(a[0]['name']) 
+0

Но не удалось распечатать a. Он показывает - UnicodeEncodeError: кодек charmap не может кодировать символ '\ xce' в позиции 28 4: символьные карты до . – Nisar

+1

Проблема @Nisar может быть с собственными символами, которые ваш терминал/консоль может не понимать так лучше, попробуйте 'print (a [0] ['name']. Encode ('some_encoding'))' где 'some_encoding' может быть' utf- 8' или другое - оно зависит от вашей системы. – furas

+0

не с этим кодом @furas Я пробовал и тестировал его – e4c5

Смежные вопросы