如何检查json对象是否为数组

时间:2015-02-03 17:14:00

标签: python json python-3.x scripting

我是python的新手。我在将json arraylist obect从java发送到python时遇到了这个问题。从java发送json对象arraylist的json结构是

[{'firstObject' : 'firstVal'}]

但是当我在python中收到它时,我得到的值为

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

当我像这样传递数组中的多个对象时:

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

我从python end收到了json

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

我无法弄清楚为什么会发生这种情况。任何人都可以帮助我将第一种情况作为数组对象,或者找出json变量是否为数组类型。

2 个答案:

答案 0 :(得分:5)

每当您使用load模块中的loads(或json)函数时,您都会获得dictlist个对象。要确保获得列表而不是包含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']

这应该会给你想要的结果。

答案 1 :(得分:1)

Python中的

json模块不会改变结构:

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

如果你看到{'listName':{'firstObject':'firstVal'}}那么某事(在java或python中(在你的应用程序代码中))会改变输出/输入。

注意:将'listName'值解压缩为shown in @Fawers' answer很容易,但您不应该这样做。修复产生错误值的上游代码。