根据文本值的存在拆分JSON对象可以通过以下步骤实现:
以下是一个示例代码,演示如何根据文本值的存在拆分JSON对象:
import json
def split_json_by_text(json_obj, text_value):
new_json_obj = {}
for key, value in json_obj.items():
if isinstance(value, dict):
sub_json_obj = split_json_by_text(value, text_value)
if sub_json_obj:
new_json_obj[key] = sub_json_obj
elif isinstance(value, list):
sub_json_list = []
for item in value:
if isinstance(item, dict):
sub_json_obj = split_json_by_text(item, text_value)
if sub_json_obj:
sub_json_list.append(sub_json_obj)
elif isinstance(item, str) and item == text_value:
sub_json_list.append(item)
if sub_json_list:
new_json_obj[key] = sub_json_list
elif isinstance(value, str) and value == text_value:
new_json_obj[key] = value
return new_json_obj
# 示例JSON对象
json_str = '''
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
},
"hobbies": ["reading", "music", "sports"],
"skills": {
"programming": "Python",
"database": "MySQL"
}
}
'''
# 解析JSON字符串为字典
json_obj = json.loads(json_str)
# 根据文本值的存在拆分JSON对象
text_value = "Python"
new_json_obj = split_json_by_text(json_obj, text_value)
# 打印拆分后的新JSON对象
print(json.dumps(new_json_obj, indent=4))
上述代码中,我们定义了一个split_json_by_text
函数,它接受一个JSON对象和一个文本值作为参数。函数内部使用递归的方式遍历JSON对象,检查每个键值对中的文本值是否存在,并将符合条件的键值对拆分到新的JSON对象中。最后,我们使用json.dumps
函数将新的JSON对象转换为格式化的JSON字符串并打印出来。
这是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云