如何利用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
相关产品推荐
相关产品推荐

