2016-04-25 9 views
1

У меня есть запрос, где я извлекаю JSON-файл и хочу показать данные в таблице в HTML. Теперь я получаю ошибку: TypeError: строковые индексы должны быть целыми числами in line: 'status': item ['status']. Проблема с внешними скобками, потому что они отсутствуют в json или что?Parsing JSON-файл с Python в Django

код views.py

json_obj = urllib2.urlopen(url) 
data = json.load(json_obj) 
results = [] 
for item in data: 
    results.append({ 
     'status': item['status'], 
     'device': item['device'], 
     }) 
return render(request, 'index/index.html', {'objects_list': results}) 

JSON-файл:

{ 
    “version": “3.62”, 
    "treesize": 2, 
    "": [ 
    { 
     “status”: “up”, 
     "device": “someDeviceName1”, 
    } 
    { 
     “status”: “up”, 
     "device": “someDeviceName2”, 
    }] 
} 
+0

'data' это словарь с тремя элементами: '' version '',' "treeize" 'и' '' '. –

+1

'json.load (json)' не имеет смысла. Действительно ли ваш ввод хранится в переменной 'json'? –

+0

What DisplayName. 'json = urllib2.urlopen (url)' связывает имя 'json' с дескриптором URL, поэтому он больше не ссылается на модуль' json'. –

ответ

2

Я не знаю, случайно ли вы скопировали содержимое JSON не так или нет, но то, что вы должны сделать является:

>>> for item in data[""]: 
...  results.append({ ... 
+0

Да, это то, чего мне не хватало. Может быть, я просто смутился, что у массива нет имени. – MMakela

+0

добавление read() в ответ дает мне ошибку: AttributeError: объект 'str' не имеет атрибута 'read' – MMakela

+0

Добавил это к правильному ответу, поскольку это работает, когда я добавил данные [""] к моему исходному коду в views.py , – MMakela