如何在python中的嵌套json中提取元素

时间:2019-06-21 06:26:34

标签: json python-3.x

我创建了一个.json文件,用于存储我的数据集类型和目录路径。我能够提取每种数据集类型的信息,但是我不知道如何尝试提取与数据集关联的元素。

我当前在使用Python 3.5,并且正在使用内置的import json

这是我用来编写.json文件的代码示例

#All Vid4 Dataset paths with JSON
d = {}

d ["Vid4_GT_Calendar"] ='{"dataset": "Vid4", ' \
                  '"Type": "GT", ' \
                  '"name": "Calendar", ' \
                  '"path": "C:Dataset_GT\\GroundTruth\\Vid4\\calendar" ' \
                  '}'
d ["Vid4_GT_City"] ='{"dataset": "Vid4", ' \
                  '"Type": "GT", ' \
                  '"name": "City", ' \
                  '"path": "C:Dataset_GT\\GroundTruth\\Vid4\\city" ' \
                  '}'
d ["Vid4_GT_Foliage"] ='{"dataset": "Vid4", ' \
                  '"Type": "GT", ' \
                  '"name": "Foliage", ' \
                  '"path": "C:Dataset_GT\\GroundTruth\\Vid4\\foliage" ' \
                  '}'
d ["Vid4_GT_Walk"] ='{"dataset": "Vid4", ' \
                  '"Type": "GT", ' \
                  '"name": "Walk", ' \
                  '"path": "C:Dataset_GT\\GroundTruth\\Vid4\\walk" ' \
                  '}'

使用下面的代码,我可以将信息隔离为一种数据集类型。

#Reads the json
with open("datasetdir.json","r") as f:
    data= f.read()
#Decode the json file
dsjson= json.loads(data)

使用print(dsjson["Vid4_GT_City"])可以得到读为{"dataset": "Vid4", "Type": "GT", "name": "City", "path": "C:Dataset_GT\GroundTruth\Vid4\city" }的输出

如果要提取“数据集”,“类型”,“名称”和“路径”的值并将其保存为python变量,下一步该怎么做。 如果我尝试对.json中的所有项目执行此操作(例如,对json中的每个“ Vid4_GT_ ..”,它将提取值并将其保存为变量。)是否存在“循环”或复制方法?

1 个答案:

答案 0 :(得分:0)

所以每个键都有一个json解码的字符串,怎么回事:

dsjson_city = json.loads(dsjson["Vid4_GT_City"])
print(dsjson_city["dataset"])

更通用:

for key in dsjson:
    dsjson[key] = json.loads(dsjson[key])
    print(dsjson[key]["dataset"])