[英]Is it possible to search a json object key based on another key in python?
这里有 json 菜鸟。 我的json数据如下:
响应: [{'id': '1', 'name': 'TimeCheck1'},{'id': '2', 'name': 'TimeCheck2'}]
我需要根据'name'
“Timecheck1”将'id'
的值显示为 1。
response= [{'id': '1', 'name': 'TimeCheck1'},{'id': '2', 'name': 'TimeCheck2'}]
# change the JSON string into a JSON object
jsonObject = json.dumps(response)
a ='TimeCheck1'
if a in jsonObject:
#print(jsonObject[a])
print(json.dumps(jsonObject[a]))
else:
print("no")
我正在尝试上面的代码到达某个地方,但我一直面临错误'string indices must be integers'
您似乎已经对响应进行了解码。 json.dumps
只是将该数据转换回字符串。 此函数将查找名称并在找到时返回项目的 id,否则返回 None。
def find_id_by_name(response, name):
for item in response:
if item["name"] == name:
return item["id"]
else: # not found
return None
id = find_id_by_name(response, name)
if id is None:
print("Not found")
json.dumps返回一个字符串。
>>> import json
>>> help(json.dumps)
Help on function dumps in module json:
dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Serialize ``obj`` to a JSON formatted ``str``.
...
也许你打算做
>>> response= [{'id': '1', 'name': 'TimeCheck1'},{'id': '2', 'name': 'TimeCheck2'}]
>>> a = 'TimeCheck1'
>>> for d in response:
... if a == d['name']:
... print(json.dumps(d))
... else:
... print("no")
...
{"id": "1", "name": "TimeCheck1"}
no
>>>
这个问题要么是关于json
要么不是。 我猜不是。 所以让我们在此基础上继续。
您的response
变量似乎是一个列表,因此我们可以对其进行迭代:
response= [{'id': '1', 'name': 'TimeCheck1'},{'id': '2', 'name': 'TimeCheck2'}]
target ='TimeCheck1'
for item in response:
if item['name'] == target:
print(f'Found: "{target}" with id:{item["id"])')
break
else:
print("no")
你可以这样做,
response= [{'id': '1', 'name': 'TimeCheck1'},{'id': '2', 'name': 'TimeCheck2'}]
# change the JSON string into a JSON object
jsonObject = json.dumps(response)
a = 'TimeCheck1'
for x in range(len(jsonObject)):
if jsonObject[x]['name'] == a
print(jsonObject[x]['id'])
else:
print("no")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.