Вот упрощенная версия JSON, с которым я работаю:
{
"libraries": [
{
"library-1": {
"file": {
"url": "foobar.com/.../library-1.bin"
}
}
},
{
"library-2": {
"application": {
"url": "barfoo.com/.../library-2.exe"
}
}
}
]
}
Используя json, я могу json.loads()
этот файл. Мне нужно найти URL-адрес, загрузить его и сохранить в локальной папке с именем library. В этом случае я бы создал две папки внутри libraries/
, одну с именем library-1
, другую library-2
. В этих папках будет все, что было загружено с URL.
Проблема, однако, не в том, чтобы добраться до URL:
my_json = json.loads(...) # get the json
for library in my_json['libraries']:
file.download(library['file']['url']) # doesn't access ['application']['url']
Поскольку в используемом мной JSON используются различные методы доступа, иногда «файл», иногда «dll» и т. Д., Я не могу использовать один конкретный ключ словаря. Как я могу использовать несколько. Будет ли модульный способ сделать это?
Редактировать: Есть многочисленные методы доступа, «file», «application» и «dll» - только некоторые примеры.