Python 函数读取 JSON 文件并检索正确的值
Python function to read JSON file and retrieve the correct value
我正在读取一个 JSON 文件以使用我的 extract_json 函数检索一些值并通过 time_minutes_coords = extract_json("boxes", "time_minutes", "coord")
调用它,这为我提供了坐标值的正确路径。
def extract_json(one,two,three):
with open('document.json') as data_file:
data = json.load(data_file)
return data[one][two][three]
但它只适用于 3 个参数。如果我想对传递的任意数量的参数使用此函数怎么办?我想要这样的东西:
def extract_json(*args):
with open('document.json') as data_file:
data = json.load(data_file)
return data[args]
但是所有的参数都是这样显示的:
(args1, args2, args3, args4)
和data(args1, args2, args3, args4)
returns什么都没有。我怎么能有这样的东西:
data[args1][args2][args3][args4]
移动到 json 文件中的正确值?
您可以通过 jsonpath-rw
module 使用 JSONPath 解决它。工作样本:
from jsonpath_rw import parse
obj = {
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
keys = ["glossary", "GlossDiv", "GlossList", "GlossEntry", "GlossDef", "para"]
jsonpath_expr = parse(".".join(keys))
print(jsonpath_expr.find(obj)[0].value)
打印:
A meta-markup language, used to create markup languages such as DocBook.
这里的键以列表的形式出现(在你的例子中是 args
)。然后,键与 dot
连接以构建到所需节点的路径。
我正在读取一个 JSON 文件以使用我的 extract_json 函数检索一些值并通过 time_minutes_coords = extract_json("boxes", "time_minutes", "coord")
调用它,这为我提供了坐标值的正确路径。
def extract_json(one,two,three):
with open('document.json') as data_file:
data = json.load(data_file)
return data[one][two][three]
但它只适用于 3 个参数。如果我想对传递的任意数量的参数使用此函数怎么办?我想要这样的东西:
def extract_json(*args):
with open('document.json') as data_file:
data = json.load(data_file)
return data[args]
但是所有的参数都是这样显示的:
(args1, args2, args3, args4)
和data(args1, args2, args3, args4)
returns什么都没有。我怎么能有这样的东西:
data[args1][args2][args3][args4]
移动到 json 文件中的正确值?
您可以通过 jsonpath-rw
module 使用 JSONPath 解决它。工作样本:
from jsonpath_rw import parse
obj = {
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
keys = ["glossary", "GlossDiv", "GlossList", "GlossEntry", "GlossDef", "para"]
jsonpath_expr = parse(".".join(keys))
print(jsonpath_expr.find(obj)[0].value)
打印:
A meta-markup language, used to create markup languages such as DocBook.
这里的键以列表的形式出现(在你的例子中是 args
)。然后,键与 dot
连接以构建到所需节点的路径。