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对象。
