You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用JSON Path列表更新数据库中存储的JSON指定部分?

动态更新JSON配置的指定路径值

实现思路

针对长度不固定的jsonPath列表,核心是逐层遍历路径定位到目标字段的父节点,修改对应键的值后,再将更新后的JSON转回字符串写入数据库。

完整代码实现

import json
from your_app.models import Config  # 替换为实际的模型导入路径

# 从请求中提取参数
json_path = request.data.get('jsonPath')
target_value = request.data.get('value')  # 假设请求携带目标更新值

if json_path and target_value:
    # 加载数据库中的配置JSON(修正原代码语法错误)
    config_obj = Config.objects.get(name__startswith='general')
    config = json.loads(config_obj.value)
    
    # 逐层导航至目标字段的父节点
    current_node = config
    # 遍历路径的前n-1个元素,定位父节点
    for key in json_path[:-1]:
        # 可选:处理路径不存在的情况,避免KeyError
        if key not in current_node:
            current_node[key] = {}
        current_node = current_node[key]
    
    # 更新目标键对应的值
    target_key = json_path[-1]
    current_node[target_key] = target_value
    
    # 将更新后的JSON转回字符串并保存回数据库
    config_obj.value = json.dumps(config)
    config_obj.save()

关键细节说明

  • 路径容错处理:代码中加入了路径不存在时自动创建空字典的逻辑,可根据业务需求调整(比如抛出异常或跳过更新)。
  • 语法修正:原代码中json.loads(...)缺少闭合括号,已修复。
  • 动态适配:通过遍历json_path[:-1]定位父节点,最后修改json_path[-1]对应的键值,支持任意长度的路径参数。

内容的提问来源于stack exchange,提问作者A. L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:35:49