欢迎访问宙启技术站
智能推送

使用Pythondemjson库将JSON数据转换为XML格式

发布时间:2023-12-11 09:42:58

demjson是一个Python库,用于将JSON数据转换为XML格式。它提供了一种方便的方式来处理JSON和XML之间的转换。以下是一个示例,展示了如何在Python中使用demjson库将JSON数据转换为XML格式。

首先,我们需要安装demjson库。可以使用pip命令来安装:

pip install demjson

然后,我们可以导入demjson库和xml.etree.ElementTree库:

import demjson
import xml.etree.ElementTree as ET

接下来,我们可以定义一个函数来将JSON数据转换为XML格式。这个函数接受一个JSON字符串作为输入,并返回一个XML字符串。函数首先使用demjson库将JSON数据解析为Python对象。然后,使用递归方法遍历Python对象,并将其转换为XML元素。最后,使用ET库将XML元素转换为XML字符串。

以下是一个示例函数的代码:

def json_to_xml(json_str):
    data = demjson.decode(json_str)
    root = ET.Element('root')

    def parse_dict(parent, dic):
        for key, value in dic.items():
            if isinstance(value, dict):
                node = ET.Element(key)
                parent.append(node)
                parse_dict(node, value)
            elif isinstance(value, list):
                for item in value:
                    node = ET.Element(key)
                    parent.append(node)
                    parse_dict(node, item)
            else:
                node = ET.Element(key)
                node.text = str(value)
                parent.append(node)

    parse_dict(root, data)

    xml_str = ET.tostring(root, encoding='utf-8', method='xml')
    return xml_str.decode('utf-8')

我们可以使用以下JSON数据作为输入进行测试:

json_data = '''
{
    "name": "John Smith",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "New York"
    },
    "friends": [
        {"name": "Jane Doe", "age": 28},
        {"name": "Bob Johnson", "age": 35}
    ]
}
'''

然后,我们可以调用函数并打印结果:

python

xml_data = json_to_xml(json_data)

print(xml_data)


运行后,我们就可以得到以下XML字符串:

xml

<root>

<name>John Smith</name>

<age>30</age>

<address>

<street>123 Main St</street>

<city>New York</city>

</address>

<friends>

<name>Jane Doe</name>

<age>28</age>

</friends>

<friends>

<name>Bob Johnson</name>

<age>35</age>

</friends>

</root>

`

以上示例演示了如何使用Python demjson库将JSON数据转换为XML格式。它提供了一个简单而方便的方法来处理JSON和XML之间的转换。你可以根据自己的需求和数据结构进行微调和扩展。