2015-07-16 1 views
0

Я начинающий программист, и я пытаюсь разобрать выходной файл json из запроса API GET, чтобы вытащить долготы и координаты широты.Напишите цикл, который анализирует словари json с использованием python

Файл JSON выглядит как this.

Входной файл JSON: here.

Мой код для разбора файла JSON в настоящее время выглядит следующим образом:

ourResult = js['transactions'][0]['meta'] 

for majorkey, subdict in ourResult.iteritems(): 
    print majorkey 
for subkey, value in subdict.iteritems(): 
    print subkey, value 

Это, однако, только возвращение одного набора значений в ключе «местоположение», и я стараюсь идти уровень далее тянуть значения «lon» и «lat».

Любая идея, какой код я должен использовать для этого?

+5

Вы должны поместить соответствующие части своего json-файла в сообщение. –

+0

Пробовал ли вы 'ourResult = js ['transaction'] [1] ['meta']' (1 вместо 0)? Первое значение в списке не содержит данных lat/lon. – mehtunguh

+0

вместо ссылки, введите необходимый код json. – manetsus

ответ

0

Как я понимаю ваш вопрос, вам нужно что-то вроде:

js = json.loads(response.content) 
ourResult = js['transactions'][0]['meta'] 

for majorkey, subdict in ourResult.iteritems(): 
    print majorkey 
    if type(subdict) == dict: 
     for subkey, value in subdict.iteritems(): 
      print subkey, value 

Вы можете печатать dict произвольной глубины с использованием кода

def print_dict_rec(indict): 
    for majorkey, subdict in indict.iteritems(): 
     if type(subdict) == dict: 
      print majorkey 
      print_dict_rec(subdict) 
     else: 
      print majorkey, subdict 

print_dict_rec(ourResult) 

кода для извлечения всех значений «широчайшей» и «долгота ключей ':

def get_values_json(js, res): 
    if type(js) == list: 
     for e in js: 
      get_values_json(e, res) 
    elif type(js) == dict: 
     for k,v in js.iteritems(): 
      if type(v) == dict or type(v) == list: 
       get_values_json(v, res) 
      else: 
       if k == 'lat' or k == 'lon': 
        res[k].append(v) 

res = {'lat':[], 'lon':[]} 
get_values_json(js, res) 
print res 
+0

Итак, я попробовал этот код, и он просто вернул тот же результат, который у меня был, прежде чем перечислять адрес, значения состояния – Vivienne

+0

@Vivienne Можете ли вы предоставить ввод в виде текстового файла? Затем я могу проверить и исправить скрипт. – kvorobiev

+0

Несомненно, это текстовый файл https://www.dropbox.com/s/snz1kqk5v74zoae/API%20code.txt?dl=0 – Vivienne

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