我要检查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": []
}
]
}
答案 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)
JSONObject类具有一个名为“ has”的方法:
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)