2 回答
TA贡献1789条经验 获得超8个赞
jsonpath-ng 可以帮助您解决这个问题。
from jsonpath_ng.ext import parse
found = parse(f"$..Settings").find(data)
if found:
for i in found:
if ''.join(i.value[1].values()) != '0':
print(i.value[0]['AN'])
TA贡献1783条经验 获得超4个赞
在代码中:
for each in j['result']['result']:
if (find_only(each['Settings'][1], 0)) != json.loads("0"):
find_all(each['Settings'][0], 0)
我实际上看到,您的情况始终是True,因为您没有返回任何东西find_only()。
我不知道,你为什么要使用 level 和这么多递归函数。虽然根据您发布的数据很容易提取结果。请找到下面的代码。
response2 = requests.request("POST", url, data=payload2, headers=headers)
j = json.loads(response2.text)
for each in j['result']['result']:
if each['Settings'][1]['T7'] not in ["0", 0]:
print(each['Settings'][0]['AN'])
如果您的响应数据不太复杂,请发布确切的解决方案。
如果您有多个键名,请查看以下代码:
response2 = requests.request("POST", url, data=payload2, headers=headers)
j = json.loads(response2.text)
def find_all(item):
if isinstance(item, dict):
for k in item:
return item[k]
# If item is non dict and you want to return this as well on `True`.
# Uncomment below commented lines.
# else:
# item
def find_only(item):
if isinstance(item, dict):
for k in item:
return item[k]
for each in j['result']['result']:
if (find_only(each['Settings'][1])) != str(json.loads("0")):
print(find_all(each['Settings'][0]))
添加回答
举报