簡體   English   中英

在Python中的嵌套Json中搜索關鍵字

[英]Search for key in Nested Json in Python

我在傑森下面。

我的要求是搜索此Json,如果“ 名稱 ”等於“ Latisha Chase”,則獲取“ id ”值

[
  {
    "_id": "5d3121cd001453772160a791",
    "friends": [
      {
        "id": 6,
        "name": "Mcknight Tran"
      },
      {
        "id": 7,
        "name": "Helena Bowers"
      },
      {
        "id": 8,
        "name": "Dorsey Ayala"
      }
    ]
    },
  {
"_id": "5d3121cd838efa513e7dda96",
"friends": [ {
  "friends": [
  {
    "id": 90,
    "name": "w Stark"
  },
  {
    "id": 91,
    "name": "w Jacobs"
  },
  {
    "id": 93,
    "name": "w Garner"
  }
]},
  {
    "id": 10,
    "name": "Amalia Stark"
  },
  {
    "id": 11,
    "name": "Myra Jacobs"
  },
  {
    "id": 12,
    "name": "Norton Garner"
  }
]
}

]

這是我的示例代碼。 有人可以幫我嗎?

我在網上嘗試了遞歸代碼,但在這里沒有使用我的示例。

更新:“朋友”不必具有單一深度。 它可以在朋友內部有朋友。 例如:朋友[{朋友[{}]}]

嘗試這個

j = [{
    "_id": "5d3121cd001453772160a791",
    "friends": [{
        "id": 6,
        "name": "Mcknight Tran"
      },
      {
        "id": 7,
        "name": "Helena Bowers"
      },
      {
        "id": 8,
        "name": "Dorsey Ayala"
      }
    ]
  },
  {
    "_id": "5d3121cded44d8ba6ad96b78",
    "friends": [{
        "id": 2,
        "name": "June Gilbert"
      },
      {
        "id": 3,
        "name": "Latisha Chase"
      },
      {
        "id": 4,
        "name": "Franco Carlson"
      }
    ]
  },
  {
    "_id": "5d3121cd838efa513e7dda96",
    "friends": [{
        "id": 10,
        "name": "Amalia Stark"
      },
      {
        "id": 11,
        "name": "Myra Jacobs"
      },
      {
        "id": 12,
        "name": "Norton Garner"
      }
    ]
  }
]
for x in j:
  for y in x.get('friends'):
    if y.get('name') == 'Latisha Chase':
      print y.get('id')

使用遞歸的更通用方法:

def recursive_function(name, l):
    if isinstance(l,list):
        for i in l:
            recursive_function(name, i)
    elif isinstance(l,dict):
        if l.get("name") == name:
            print (l.get("id"))
        for v in l.values():
            if isinstance(v, list) or isinstance(v, dict):
                recursive_function(name, v)

recursive_function("Latisha Chase",json_obj)

結果:

3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM