json = '{
"app": {
"Garden": {
"Flowers": {
"Red flower": "Rose",
"White Flower": "Jasmine",
"Yellow Flower": "Marigold"
}
},
"Fruits": {
"Yellow fruit": "Mango",
"Green fruit": "Guava",
"White Flower": "groovy"
},
"Trees": {
"label": {
"Yellow fruit": "Pumpkin",
"White Flower": "Bogan"
}
}
}'
这是我的json字符串,它不断变化,所以字典中的键位置每次都不一样,我需要搜索一个键并打印它对应的值,因为json字符串每次都改变我写了一个递归函数(见下文)来搜索新的json字符串中的键并打印值。然而现在的情况是,我们有相同的key多次与diff值,我如何才能获得key的完整路径,以便更容易理解它是哪个key值,例如结果应该是这样的:
app.Garden.Flowers.white Flower = Jasmine
app.Fruits.White Flower = groovy
app.Trees.label.White Flower = Bogan
我的代码:
import json
with open('data.json') as data_file:
j = json.load(data_file)
def find(element, JSON):
if element in JSON:
print JSON[element].encode('utf-8')
for key in JSON:
if isinstance(JSON[key], dict):
find(element, JSON[key])
find(element to search,j)
4条答案
按热度按时间yx2lnoni1#
您可以添加一个字符串参数来跟踪当前JSON路径。下面的方法可以起作用:
你可以这样称呼它:
5ktev3wc2#
gist
wgxvkvu93#
下面的代码片段将给予JSON中可访问的路径列表。它遵循JSON路径的约定,其中
[]
表示路径是一个列表。31moq8wy4#
下面是Brian的答案的修改版本,它支持列表并返回结果:
用途: