我是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变量是否为数组类型。
答案 0 :(得分:5)
每当您使用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']
这应该会给你想要的结果。
答案 1 :(得分:1)
json
模块不会改变结构:
assert type(json.loads('[{"firstObject": "firstVal"}]')) == list
如果你看到{'listName':{'firstObject':'firstVal'}}
那么某事(在java或python中(在你的应用程序代码中))会改变输出/输入。
注意:将'listName'
值解压缩为shown in @Fawers' answer很容易,但您不应该这样做。修复产生错误值的上游代码。