如何检查json键和值在json文件中可用

时间:2019-10-04 07:48:49

标签: python json

我要检查json文件中是否"Code":"A"可用。我已经在互联网上搜索并阅读了许多stackoverflow的质量检查信息,但这对我没有帮助。谁能告诉我该怎么做?

with open(dummyJson_url):
    dataList = json.load(open(dummyJson_url))

test = json.loads("""{"Code":"A"}""")

racksLocation = dataList["Test"]

for i in range(len(racksLocation)):

    newLoc = dataList["Test"][i]

    if sorted(test.items()) in sorted(newLoc.items()):
        print("Yes")
        break

    else:
        print("No")

这是我的json:

{
    "Test": [
        {
            "Code":"A",
            "Buyer": []
        },
        {
            "Code":"B",
            "New": []
        },
        {
            "Code":"C",
            "Racks": []
        },
        {
            "Code":"D",
            "Baru": []
        }
    ]
}

5 个答案:

答案 0 :(得分:1)

有一个非常简单的问题:

>>> print(sorted(test.items()))
[('Code', 'A')] #a list with 1 item(tuple) in it

>>> print(sorted(newLoc.items()))
[('Buyer', []), ('Code', 'A')] #a list with 2 tuples

因此,当您尝试这样做时:

if sorted(test.items()) in sorted(newLoc.items()):
   ...

条件失败,因为[('Code', 'A')]不在[('Buyer', []), ('Code', 'A')]中,但是('Code', 'A')在! (请注意此处缺少列表括号)

您需要做的就是访问[('Code', 'A')](即sorted(test.items())[0])中的第一个(也是唯一一个)元素

这就是您只想坚持使用的方法所需要做的(可能会有所改善,但我不会介绍)

with open(dummyJson_url):
    dataList = json.load(open(dummyJson_url))

test = json.loads("""{"Code":"A"}""")

racksLocation = dataList["Test"]

for i in range(len(racksLocation)):

    newLoc = dataList["Test"][i]

    if sorted(test.items())[0] in sorted(newLoc.items()): #you are now checking the first element inside the list
        print("Yes")
        break

    else:
        print("No")

答案 1 :(得分:0)

简化了您的代码:

with open(dummyJson_url):
    dataList = json.load(open(dummyJson_url))

for item in datalist['Test']:
    if 'Code' in item and item['Code'] == "A":
        print 'yes'
        break
    else:
        print 'no'

答案 2 :(得分:0)

当您进行json.loads(json_string)操作时,如果您得到json_data={"a":1},它将为您提供字典;如​​果您进行json_data.get("a"),则将为您提供字典;如​​果存在,None将为您提供值1。可以检查您是否可以为此设置可撤消功能

 def check_in_json(jsondata,key,value):
       for data in jsondata:
           if data.get(key) == value:
              return True
       return False

像这样称呼

json_data={
    "Test": [
        {
            "Code":"A",
            "Buyer": []
        },
        {
            "Code":"B",
            "New": []
        },
        {
            "Code":"C",
            "Racks": []
        },
        {
            "Code":"D",
            "Baru": []
        }
    ]
}

check_in_json(json_data["Test"],"Code","A") #you will get True if found else false

答案 3 :(得分:0)

按照您的方法进行操作,请尝试以下代码:

with open(dummyJson_url):
    dataList = json.load(open(dummyJson_url))

test = {"Code":"A"}

for data in dataList["Test"]:
    if test.items() <= data.items():   # In dict, .items() would give you the set type which can be compared.
        print("Yes")
        break
    else:
        print("No")

希望这会有所帮助!

答案 4 :(得分:0)