我正在尝试迭代这个json数组:
[{
"date": "2018-02-21T12:53:00",
"name": "System date",
"ID_BBData": "none",
"TOKEN_BBData": "none",
"rawValue": 540916682
},
{
"date": "2018-02-21T12:53:00",
"name": "Temperature sensor 1",
"ID_BBData": "none",
"TOKEN_BBData": "none",
"rawValue": 11
},
{
"date": "2018-02-21T12:53:00",
"name": "Value week",
"ID_BBData": "none",
"TOKEN_BBData": "none",
"rawValue": 1810
}]
有了这个循环:
# print the keys and values
for key in jsonObject:
value = jsonObject[key]
print("The key and value are ({}) = ({})".format(key, value))
其中jsonObject是上面的json。 问题是json被[]括起来,但是这个数组没有任何名称。
有什么线索来迭代这个吗?
非常感谢!
答案 0 :(得分:1)
首先,您应该了解您的对象是字典列表。如果将数据放入变量(例如lst),然后检查类型:
,则可以轻松地检查这一点>>> lst
[{'date': '2018-02-21T12:53:00', 'name': 'Temperature sensor 1', 'ID_BBData': 'none', 'TOKEN_BBData': 'none', 'rawValue': 11}, {'date': '2018-02-21T12:53:00', 'name': 'Value week', 'ID_BBData': 'none', 'TOKEN_BBData': 'none', 'rawValue': 1810}]
>>> type(lst) # the type of the whole datastructure
<class 'list'>
>>> type(lst[0]) # the type of the first element of the list
<class 'dict'>
如果您了解,您有这样的结构,您可以开始考虑循环列表中的项目,其中每个项目都是字典:
>>> for lst_item in lst:
... for key, value in lst_item.items(): # this is python3 specific
... print('key: {} value: {}'.format(key, value))
...
key: date value: 2018-02-21T12:53:00
key: name value: Temperature sensor 1
key: ID_BBData value: none
key: TOKEN_BBData value: none
key: rawValue value: 11
key: date value: 2018-02-21T12:53:00
key: name value: Value week
key: ID_BBData value: none
key: TOKEN_BBData value: none
key: rawValue value: 1810
如果要在python2中迭代字典,请使用
for key, value in lst_item.iteritems():
代替。
答案 1 :(得分:0)
如果要迭代所有列表元素(如注释中所述,它是列表而不是json对象):
for line in jsonObject:
for key, value in line.items():
print("The key and value are ({}) = ({})".format(key, value))
答案 2 :(得分:0)
首先转换json数组,然后执行python编码以获取值。
data = json.loads(array)