簡體   English   中英

根據數組過濾 json 值

[英]Filter json value based on array

我有一個 json 如下所示

[
  {       
      "ename": "mark",
      "id": "1",
      "url": "Lennon.com"
  },
  {
      "ename": "egg",
      "id": "2",
      "url": "egg.com"
  },
  {
      "ename": "love",
      "id": "3",
      "url": "love.com"
  }
]

我也有這樣的數組 ["1", "2"]

我需要根據我的數組過濾掉數組值,所以最終輸出應該是

[
  {
      "ename": "love",
      "id": "3",
      "url": "love.com"
  }
]

這是我現在的代碼:

obj  = json.load(open("package.json"))

remove_id = ["1","2"]

# Iterate through the objects in the JSON and pop (remove)
# the obj once we find it.
for x in remove_id:
    print x
    for i in xrange(len(obj)):
        if obj[i]["id"] == x:
            obj.pop(i)
            break


# Output the updated file with pretty JSON
open("updated-file-3.json", "w").write(
    json.dumps(obj, sort_keys=True, indent=4, separators=(',', ': '))
)

它不工作; 你能幫忙嗎

首先,它看起來remove_id是一個int list ,但id鍵是一個str所以即使它匹配它也不會通過相等性測試。 話雖如此,無需修改原始 object,您可以使用列表理解創建副本。

[o for o in obj if int(o["id"]) not in remove_id]

>> [{'ename': 'love', 'id': '3', 'url': 'love.com'}]

暫無
暫無

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

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