从 json 格式中提取项目
Extract items from json format
我正在尝试从 json 格式中提取数据,其中还包含字典列表。但是当我访问它时它显示 None
.
我想做什么:-
我正试图从下面的反应中得到content
code.py
def extract():
res = {
"$schema": "http://json-schema.org/schema#",
"anyOf": [{
"type": "array",
"items": {
"type": "object",
"properties": {
"response": {
"type": "integer"
},
"content": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title"
]
}
}
},
"required": [
"content",
"response"
]
}
}
]
}
# When I try this then it shows an error
json_ext = json.loads(res)
print(json_ext['anyOf[0].properties'])
它returns为错误
TypeError: the JSON object must be str, bytes or bytearray, not dict
我也试过使用
def deep_get_imps(data, key: str):
split_keys = re.split("[\[\]]", key)
out_data = data
for split_key in split_keys:
if split_key == "":
return out_data
elif isinstance(out_data, dict):
out_data = out_data.get(split_key)
elif isinstance(out_data, list):
try:
sub = int(split_key)
except ValueError:
return None
else:
length = len(out_data)
out_data = out_data[sub] if -length <= sub < length else None
else:
return None
return out_data
def deep_get(dictionary, keys):
return reduce(deep_get_imps, keys.split("."), dictionary)
AS
print(deep_get(res, "anyOf[0].items[0]"))
但是它 returns none,它仍然没有得到 content
响应。
我试了很多次了,还是不行。任何帮助将非常感激。提前致谢。
您的对象 res
是一个所谓的字典,这就是为什么您的代码在调用 json_ext = json.loads(res)
时抛出 TypeError
的原因,因为 loads
仅适用于字符串字符和类似类型。
你可能想做的更像这样:
def extract():
res = {
... # shortened for readability
}
print(res["anyOf"][0]["items"]["properties"]["content"])
我正在尝试从 json 格式中提取数据,其中还包含字典列表。但是当我访问它时它显示 None
.
我想做什么:-
我正试图从下面的反应中得到content
code.py
def extract():
res = {
"$schema": "http://json-schema.org/schema#",
"anyOf": [{
"type": "array",
"items": {
"type": "object",
"properties": {
"response": {
"type": "integer"
},
"content": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title"
]
}
}
},
"required": [
"content",
"response"
]
}
}
]
}
# When I try this then it shows an error
json_ext = json.loads(res)
print(json_ext['anyOf[0].properties'])
它returns为错误
TypeError: the JSON object must be str, bytes or bytearray, not dict
我也试过使用
def deep_get_imps(data, key: str):
split_keys = re.split("[\[\]]", key)
out_data = data
for split_key in split_keys:
if split_key == "":
return out_data
elif isinstance(out_data, dict):
out_data = out_data.get(split_key)
elif isinstance(out_data, list):
try:
sub = int(split_key)
except ValueError:
return None
else:
length = len(out_data)
out_data = out_data[sub] if -length <= sub < length else None
else:
return None
return out_data
def deep_get(dictionary, keys):
return reduce(deep_get_imps, keys.split("."), dictionary)
AS
print(deep_get(res, "anyOf[0].items[0]"))
但是它 returns none,它仍然没有得到 content
响应。
我试了很多次了,还是不行。任何帮助将非常感激。提前致谢。
您的对象 res
是一个所谓的字典,这就是为什么您的代码在调用 json_ext = json.loads(res)
时抛出 TypeError
的原因,因为 loads
仅适用于字符串字符和类似类型。
你可能想做的更像这样:
def extract():
res = {
... # shortened for readability
}
print(res["anyOf"][0]["items"]["properties"]["content"])