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

demjson库中decode()函数的递归解析示例

发布时间:2023-12-25 07:06:01

demjson库中的decode()函数是用来将JSON格式的字符串转换为Python对象的方法。

递归解析示例:

以下示例演示了如何使用decode()函数来递归地解析JSON字符串。

import demjson

def recursive_parse(data):
    if isinstance(data, str):  # 如果data是一个字符串,则尝试解析为JSON对象
        try:
            return demjson.decode(data)
        except demjson.JSONDecodeError:
            return data
    elif isinstance(data, list):  # 如果data是一个列表,则逐个解析列表中的元素
        return [recursive_parse(item) for item in data]
    elif isinstance(data, dict):  # 如果data是一个字典,则逐个解析字典中的键值对
        return {key: recursive_parse(value) for key, value in data.items()}
    else:
        return data

data_str = '{"name": "John", "age": 30, "hobbies": ["programming", "reading"], "address": {"street": "123 Main St", "city": "New York"}}'

data = demjson.decode(data_str)
parsed_data = recursive_parse(data)

print(parsed_data)

输出结果:

{'name': 'John', 'age': 30, 'hobbies': ['programming', 'reading'], 'address': {'street': '123 Main St', 'city': 'New York'}}

在上面的示例中,首先将JSON字符串data_str解析为Python对象data。然后,通过调用recursive_parse()函数来递归地解析data对象。如果data是一个字符串,则尝试将其解析为JSON对象;如果data是一个列表,则逐个解析列表中的元素;如果data是一个字典,则逐个解析字典中的键值对。最后,将解析后的数据存储在parsed_data变量中并打印出来。

这个例子说明了如何使用decode()函数来解析JSON字符串,并展示了递归解析的过程。通过递归解析,我们可以方便地处理嵌套的JSON数据,并将其转换为Python对象。