Как извлечь элементы во вложенный json в python

Я создал файл .json, в котором хранятся мои типы наборов данных и пути к каталогам. Я могу получить информацию для каждого типа набора данных, но я не знаю, как попытаться извлечь элементы, связанные с набором данных.

В настоящее время я использую Python 3.5 и использую встроенный импорт 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 (например, для каждого «Vid4_GT_..», который находится в json, он будет извлекать и сохранять значения как переменные.) есть ли способ «зациклить» или повторить метод?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Таким образом, каждый ключ имеет строку, декодированную 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"])

Спасибо! это решило проблему с вложенным json!

Kyr 24.06.2019 03:21

Другие вопросы по теме