以下是一个示例代码,演示了如何重新排序具有嵌套属性的JSON对象的键。
import json
def sort_nested_json(json_obj):
if isinstance(json_obj, dict):
sorted_dict = {}
for key in sorted(json_obj.keys()):
sorted_dict[key] = sort_nested_json(json_obj[key])
return sorted_dict
elif isinstance(json_obj, list):
sorted_list = []
for item in json_obj:
sorted_list.append(sort_nested_json(item))
return sorted_list
else:
return json_obj
# 示例JSON对象
json_str = '''
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"zip": "10001"
},
"children": [
{
"name": "Alice",
"age": 5
},
{
"name": "Bob",
"age": 8
}
]
}
'''
# 解析JSON字符串为对象
json_obj = json.loads(json_str)
# 重新排序JSON对象
sorted_json_obj = sort_nested_json(json_obj)
# 将排序后的JSON对象转换回字符串
sorted_json_str = json.dumps(sorted_json_obj, indent=2)
# 打印排序后的JSON字符串
print(sorted_json_str)
上述代码首先定义了一个sort_nested_json
函数,它使用递归方式遍历JSON对象的所有键和值,并在需要时进行排序。然后,示例JSON字符串被解析为JSON对象。接下来,sort_nested_json
函数被应用于JSON对象,以重新排序它的键。最后,排序后的JSON对象被转换回JSON字符串,并打印出来。
以上代码示例的输出如下:
{
"address": {
"city": "New York",
"street": "123 Main St",
"zip": "10001"
},
"age": 30,
"children": [
{
"age": 5,
"name": "Alice"
},
{
"age": 8,
"name": "Bob"
}
],
"name": "John"
}
可以看到,JSON对象中的键已按字母顺序重新排序,包括嵌套的属性。