清除值JSON

2024-09-30 22:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在返回JSON时遇到了一个错误,显然是因为字典的“0”,但是字典有这样的结构,我想有办法删除“0”,我留下下面的代码来了解这是否可行

d = json.loads('{ "jsonrpc": "2.0", "id": "1", "result": [ 0, {"ubus_rpc_session": "d8f4cec54d08c3f1d5581ec6135992e7","timeout": 300,"expires": 300,"acls": {"access-group": {"superuser": ["read","write"],"unauthenticated": ["read"]},"ubus": {"*": ["*"],"session": ["access","login"]},"uci": {"*": ["read","write"]}},"data": {"username": "root"}}]}')

#print d

for i in d["result"]:

    if 'ubus_rpc_session' in i:
        print i['ubus_rpc_session']
```

if 'ubus_rpc_session' in i:
TypeError: argument of type 'int' is not iterable

Tags: injsonreadif字典accesssession错误
2条回答

检查下面的代码,它是用python编写的,因此print还有其他语法

import json
d = json.loads('{ "jsonrpc": "2.0", "id": "1", "result": [ 0, {"ubus_rpc_session": "d8f4cec54d08c3f1d5581ec6135992e7","timeout": 300,"expires": 300,"acls": {"access-group": {"superuser": ["read","write"],"unauthenticated": ["read"]},"ubus": {"*": ["*"],"session": ["access","login"]},"uci": {"*": ["read","write"]}},"data": {"username": "root"}}]}')

#print d
#print(type(d['result'][1]))

i = d['result'][1]['ubus_rpc_session']
print(i)

出现错误,因为键'result'的值是一个列表,而“ubus\u rpc\u session”是列表字典中的一个键。简单地说,该值类似于[int,dict]

所以d['result']给出[int,dict..] 在第一次迭代中,您正在检查“ubus\u rpc\u session”是否为int,这是错误的(因此是TypeError)。一个可能的解决方法是,删除int并只获取dict元素

value_dict = d.get("results")[1] #dict is at index 1 in the value of 'results' key
if 'ubus_rpc_session' in value_dict:
....#Do Something

相关问题 更多 >