Как правильно конвертировать XML в JSON на python с учетом массивов?
Всем привет! Есть потребность конвертировать XML в JSON на python. Та реализация что есть не подходит, т.к. добавляет ненужный тэг. Есть XML вида:
<base>
<test>test xml</test>
<array>
<element>
<name>name1</name>
<value>value1</value>
</element>
<element>
<name>name2</name>
<value>value2</value>
</element>
<element>
<name>name3</name>
<value>value3</value>
</element>
</array>
</base>
А так же есть простой код:
import json
import xmltodict
with open("D:/PST/Zenit/test cases/text.xml") as xml_file:
data_dict = xmltodict.parse(xml_file.read())
json_data = json.dumps(data_dict)
with open("data.json", "w") as json_file:
json_file.write(json_data)
При запуске кода получаю такой JSON:
{
"base": {
"test": "asdasd",
"array": {
"element": [
{
"name": "name1",
"value": "value1"
},
{
"name": "name2",
"value": "value2"
},
{
"name": "name3",
"value": "value3"
}
]
}
}
}
А по задаче требуется получить следующий JSON:
{
"base": {
"test": "asdasd",
"array": [
{
"name": "name1",
"value": "value1"
},
{
"name": "name2",
"value": "value2"
},
{
"name": "name3",
"value": "value3"
}
]
}
}
То есть требуется получить JSON с преобразованными тэгами массива (element, item) Подскажите, есть ли решение какое?
Ответы (1 шт):
Автор решения: Sequent
→ Ссылка
Базовый вариант без проверок полей
import json
import xmltodict
with open("test.xml") as xml_file:
data_dict = xmltodict.parse(xml_file.read())
data_dict['base']['array'] = data_dict['base']['array']['element']
json_data = json.dumps(data_dict)
with open("test.json", "w") as json_file:
json_file.write(json_data)
Результат:
{"base": {"test": "test xml", "array": [{"name": "name1", "value": "value1"}, {"name": "name2", "value": "value2"}, {"name": "name3", "value": "value3"}]}}