2015-02-03 6 views
0

Im новой для python.I придумал этот вопрос во время отправки JSon Список_массивов obect от Явы до python.While отправки объекта JSON из Java JSON структуры ArrayList являетсяКак проверить объект JSON, является ли массив

[{'firstObject' : 'firstVal'}] 

, но когда я получаю его в питоне я получаю значение как

{'listName':{'firstObject':'firstVal'}} 

, когда я прохожу более одного объекта в массиве, как это:

[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}] 

Я получаю JSON от конца питона, как

{'listName':[{'firstObject':'firstVal'},{'secondObject' : 'secondVal'}]}  

Я не мог понять, почему это happening.Can кто-нибудь поможет мне либо способ сделать первый случай объект массив или способ выяснить, является ли json variable - тип массива.

+0

Я думаю, что это будет зависеть от вашего Java-кода, а не от Python. Независимо от того, что испускает этот JSON, добавляется '' listName "' в структуру. – bheklilr

+0

note: '[{'firstObject': 'firstVal'}]' не является правильным json (json не использует одинарные кавычки для строк). Как вы наблюдаете, что отправлено из java? – jfs

ответ

3

Всякий раз, когда вы используете функцию load (или loads) от json модуля, вы получаете либо dict или list объекта. Для того, чтобы убедиться, что вы получите список вместо Словаря, содержащего listName, вы можете сделать следующее:

import json 

jsonfile = open(...) # <- your json file 
json_obj = json.load(jsonfile) 

if isinstance(json_obj, dict) and 'listName' in json_obj: 
    json_obj = json_obj['listName'] 

Это должно дать вам желаемый результат.

2

json модуль в Python не изменяет структуру:

assert type(json.loads('[{"firstObject": "firstVal"}]')) == list 

Если вы видите {'listName':{'firstObject':'firstVal'}} то что-то (либо в Java или в Python (в коде приложения)) изменяет выход/вход.

Примечание: легко распечатать значение 'listName' как shown in @Fawers' answer, но вы не должны этого делать. Исправьте восходящий код, который вместо этого производит неправильные значения.

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