亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在條件下使用 Python 解析/提取嵌套的 JSON 數據

在條件下使用 Python 解析/提取嵌套的 JSON 數據

慕桂英546537 2021-10-10 18:57:34
我正在嘗試從我執行發布請求的 JSON 文件中的細節中提取/解析值。這是 JSON 文件。我試圖從鍵“AN”中獲取值。我希望能夠提取諸如“ shannoncampbell_znyq1 ”、“ katiekapprelmac ”等值,以便第二行中的值不等于數字零。例如,由于katiekapprelmac的第二行值(該行是T7)不等于零,我的代碼應該將其吐出(katiekapprelmac應該是輸出)。然而事實并非如此。JSON 文件:{"id": "jsonrpc","jsonrpc": "2.0","result": {    "result": [        {            "AccountId": 697429,            "Flags": [                "AutoDeployed"            ],            "PartnerId": 287562,            "Settings": [                {                    "AN": "shannoncampbell_znyq1"                },                {                    "T7": "0"                }            ]        },        {            "AccountId": 725177,            "Flags": null,            "PartnerId": 287562,            "Settings": [                {                    "AN": "katiekapprelmac"                },                {                    "T7": "5"                }            ]        },        {            "AccountId": 689130,            "Flags": [                "AutoDeployed"            ],            "PartnerId": 287562,            "Settings": [                {                    "AN": "sara-pc_wpv7h"                },                {                    "T7": "0"                }            ]        },        {            "AccountId": 697531,            "Flags": null,            "PartnerId": 287562,            "Settings": [                {                    "AN": "kaelaweeksmac"                },                {                    "T7": "0"                }            ]        },        {            "AccountId": 615877,            "Flags": null,            "PartnerId": 249098,            "Settings": [                {                    "AN": "elenimacbookpro"                },                {                    "T7": "0"                }            ]        },
查看完整描述

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'])


查看完整回答
反對 回復 2021-10-10
?
慕娘9325324

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]))


查看完整回答
反對 回復 2021-10-10
  • 2 回答
  • 0 關注
  • 267 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號