У меня есть код JSON
, который хранится в переменной jso
.Итерация над объектом JSON в python
jso = {
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
Всякий раз, когда я пытаюсь извлечь данные или перебрать JSON Object
, он печатает данные в обратном порядке т.е. object
, а затем других параметров.
Для примера. Я исполняю:
>>> for k,v in jso.iteritems():
... print v
...
И ВЫХОДНОЙ I GOT:
ВЫХОД ПОЛУЧЕНИЕ
{'GlossList': {'GlossEntry': {'Abbrev': 'ISO 8879:1986', 'GlossDef': {'GlossSeeAlso': ['GML', 'XML']}, 'GlossSee': 'markup'}}, 'title': 'S'}
Можно видеть, что хотя 'title':'S'
была написана до 'GlossList' Object
еще данные печати в обратный порядок. Я имею в виду он должен иметь:
ВЫВОД ОЖИДАЕМЫЕ
{ 'title': 'S', 'GlossList': {'GlossEntry': {'Abbrev': 'ISO 8879:1986', 'GlossDef': {'GlossSeeAlso': ['GML', 'XML']}, 'GlossSee': 'markup'}}}
Важно также отметить, что эта концепция распространяется к JSON. «Объект - это неупорядоченный набор пар имя/значение». –
Спасибо @alecxe! Но я не могу использовать 'isinstance (v, (list))' или 'isinstance (v, (str))' для проверки записи, являющейся списком/строкой, когда я выполняю итерацию по OrderDict для k, v в my_ordered_dict.iteritems(): ... печать к, v GlossDiv OrderedDict ([(u'title 'и'S '), (u'GlossList', OrderedDict ([(u'GlossEntry', OrderedDict ([ (u'Abbrev ', u'ISO 8879: 1986'), (u'GlossDef ', OrderedDict ([(u'GlossSeeAlso', [u'GML ', u'XML'])])), (u'GlossSee ', u'markup')]))]))]) >>> isinstance (v, (list)) #isinstance (v, (str)) – softvar
@VarunMalhotra Это требование не в вашем вопросе. Измените свой вопрос, чтобы объяснить, что вам нужно. –