2015-09-27 3 views
1

Существует много информации о загрузке файлов .json, но я просто не могу понять, в чем проблема:Разбор .json файл с Python

У меня есть внешний файл с именем LocationHistory.json с различными координатами внутри , Ради эталонным, это как перечислен данные:

{ 
    "data" : { 
     "items" : [ { 
     "kind" : "latitude#location", 
     "timestampMs" : "1374870896803", 
     "latitude" : 34.9482949, 
     "longitude" : -85.3245474, 
     "accuracy" : 2149 
     }, { 
     "kind" : "latitude#location", 
     "timestampMs" : "1374870711762", 
     "latitude" : 34.9857898, 
     "longitude" : -85.3526902, 
     "accuracy" : 2016 
     }, { 
     "kind" : "latitude#location", 
     "timestampMs" : "1374870651752", 
     "latitude" : 34.9857898, 
     "longitude" : -85.3526902, 
     "accuracy" : 2016 
     }] 
    } 
} 

Я пытаюсь разобрать эту информацию:

import json 

json_file = open ('LocationHistory.json') 
json_string = json_file.read() 
json_data = json.loads (json_string) 

locations = json_data ["data"] 

for location in locations: 
    print location["timestampMS"], location["latitude"], location["longitude"], location["accuracy"] 

Почему я получаю сообщение об ошибке:

line 10, in

print location["timestampMS"], location["latitude"], location["longitude"], location["accuracy"]

TypeError: string indices must be integers

Вся информация, которую я могу найти для анализа файлов .json, объясняет этот тип решения, которое у меня есть. Где я иду не так?

Заранее спасибо, я уверен, что это должна быть простая ошибка ...

ответ

1

Вы хотите перебрать элементы данных вместо:

locations = json_data["data"]["items"] 
for location in locations: # now "locations" is a list of dictionaries 
    # ... 
+0

Спасибо так много @alecxe, это решить мой проблема. Вся информация, которую я мог получить, всегда показывала одиночные списки, не похожие на мои, с «данными» с «списком» в нем. Я ценю вашу помощь –

+0

alecxe, как я могу проанализировать файл данных JSON в формате KML, а не распечатывать его? Благодаря :) –