【发布时间】:2018-12-17 07:25:28
【问题描述】:
我收到了一个相当不舒服的 JSON 格式,如下所示:
[
{
"attributes": [
{
"type": "COMMAND",
"name": "COMMAND",
"value": [
"buttonState"
]
},
{
"type": "std_msgs.msg.Bool",
"name": "buttonState",
"value": {
"data": false
}
}
],
"type": "sensor",
"id": "s_2"
}]
我想比较一段数据(更准确地说是 Button 状态的值),但我似乎失败了。尝试以下:
import requests
import json
yo = 1
switchPost = "http://192.168.0.104:7896/iot/d?k=123456789&i=san_1_switch&d=sw|{}"
robGet = "http://192.168.0.109:10100/robot/sen_2"
r = requests.get(robGet, headers={"content-type":"application/json"})
resp = json.loads(r.text)
for attrs in (resp['attributes']['value']):
if attrs['data'] == false:
yo = 100
break
g = requests.post(switchPost.format(yo), headers={"content-type":"text/plain"})
print(r.text)
不幸的是,我收到的错误如下:
对于 (resp['attributes']['value']) 中的属性:
TypeError: 列表索引必须是整数,而不是 str
【问题讨论】:
-
请注意
attributes中的值是如何另外包装在列表中的;只需使用额外的[0]访问它就可以了,即resp['attributes'][0]['value'] -
请注意,外部元素也可能需要这样做,因为还有一个全局列表包装器。
-
@dennlinger 谢谢,下次我会考虑以下几点!
标签: python json api parsing python-requests