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]))
添加回答
舉報