#python #arrays #json
#python #массивы #json
Вопрос:
У меня есть файл JSON, который я прочитал на Python. JSON (см. Ниже) содержит два элемента верхнего уровня, оба являются массивами, содержащими сложную структуру, включая другие массивы на более низких уровнях. По какой-то причине Python, похоже, считывает только один элемент из обоих массивов верхнего уровня.
Это JSON:
{
"deliverables": [
{
"name": "<uvCode>gadget1",
"objects": [
{ "name": "handler-plate" },
{ "name": "Cone" }
]
},
{
"name": "<uvCode>gadget2",
"objects": [
{ "name": "handler-plate" },
{ "name": "Cone" }
]
}
],
"uvCombinations": [
{
"name": "st01",
"uvMapping": [
{
"objectNameContains": "handler-plate",
"uvLayer": "UVMap1"
},
{
"objectNameContains": "Cone",
"uvLayer": "UVMap1"
}
]
},
{
"name": "st02",
"uvMapping": [
{
"objectNameContains": "handler-plate",
"uvLayer": "UVMap3"
},
{
"objectNameContains": "Cone",
"uvLayer": "UVMap2"
}
]
}
]
}
Это мой код для чтения и выгрузки файла JSON:
with open("file.json") as configFile:
configuration = json.load(configFile)
logging.debug("CONFIG: %s", json.dumps(configuration, indent=4))
И это результат:
CONFIG: {
"deliverables": [
{
"name": "<uvCode>gadget1",
"objects": [
{
"name": "handler-plate"
},
{
"name": "Cone"
}
]
}
],
"uvCombinations": [
{
"name": "st02",
"uvMapping": [
{
"objectNameContains": "handler-plate",
"uvLayer": "UVMap3"
},
{
"objectNameContains": "Cone",
"uvLayer": "UVMap2"
}
]
}
]
}
Второй элемент массива deliverables
(с именем <uvCode>gadget2
) и первый элемент массива uvCombination
(с именем st01
) каким-то образом отсутствуют.
Я не эксперт по Python, но я думаю, что это должно работать как шарм, и странно, что недостающие элементы даже не имеют одного и того же индекса. Становится еще интереснее, если вы заметите, что массивы вызываются objects
и uvMapping
читаются правильно.
Что я делаю не так?, спрашивает бедный парень
Комментарии:
1. Я не могу воспроизвести это. Я подозреваю, что файл, который вы читаете, не содержит того, что вы думаете, что он делает.
2. Я не могу воспроизвести эту проблему. Учитывая ваш JSON и ваш код на Python, я получаю выходной JSON со всем нетронутым. Происходит что-то еще.
Ответ №1:
О, ребята, вы спасли мне жизнь! Поскольку двое из вас очень быстро сообщили, что вы не можете его воспроизвести, и, поскольку Джордан предположил, что, возможно, мой файл не содержит того, что я думаю, я сначала запустил ROTL, затем я взглянул на файлы и обнаружил, что имя файла не было обновлено… Я редактировал другой файл в течение нескольких часов… : D
Спасибо, ребята, правда. Если вы не говорите, что не можете его воспроизвести, я никогда этого не осознаю, поскольку я полностью забыл о другой копии файла.