首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何动态设置复杂json内容的值,接收key (或key path)和value作为参数

动态设置复杂 JSON 内容的值可以使用递归函数来实现,递归函数可以根据给定的键路径(key path)逐层访问 JSON 对象,并根据给定的值进行赋值操作。

以下是一个实现的示例代码:

代码语言:txt
复制
import json

def set_json_value(json_obj, key_path, value):
    if not key_path:
        return value

    keys = key_path.split('.')
    current_key = keys.pop(0)

    if isinstance(json_obj, list):
        current_key = int(current_key)

    if len(keys) > 0:
        json_obj[current_key] = set_json_value(json_obj[current_key], '.'.join(keys), value)
    else:
        json_obj[current_key] = value

    return json_obj

# 示例 JSON 对象
json_str = '''
{
    "name": "John",
    "age": 30,
    "skills": {
        "programming": ["Python", "JavaScript"],
        "design": ["Photoshop", "Illustrator"]
    },
    "address": {
        "street": "123 ABC Street",
        "city": "XYZ City"
    }
}
'''

# 将 JSON 字符串解析为对象
json_obj = json.loads(json_str)

# 设置 JSON 对象的值
json_obj = set_json_value(json_obj, 'name', 'Alice')
json_obj = set_json_value(json_obj, 'skills.programming.1', 'Java')
json_obj = set_json_value(json_obj, 'address.city', 'ABC City')

# 将 JSON 对象转换为字符串
updated_json_str = json.dumps(json_obj, indent=4)
print(updated_json_str)

这个示例代码中,首先定义了一个递归函数 set_json_value,它接收三个参数:json_obj(JSON 对象),key_path(键路径),value(要设置的值)。

在函数中,首先将键路径按照点号进行切割,然后取出路径的第一个键,并判断该键对应的值是一个对象还是一个列表。如果是列表,则将当前键转换为整数类型。

然后判断路径是否还有剩余部分,如果有,则递归调用 set_json_value 函数继续处理下一层的对象。如果没有剩余路径,则将值赋给当前键。

最后,将更新后的 JSON 对象转换为字符串,并打印输出。

这样,就可以通过指定键路径和值来动态设置复杂 JSON 内容的值了。

请注意,这个示例中并没有提及任何具体的云计算品牌商,以及与云计算相关的名词、概念、分类、优势、应用场景和腾讯云产品链接。如需获取相关信息,请提供具体的问题和要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券