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

Python3中如何通过循环修改类JSON字符串内的指定值

Python3 循环修改嵌套类JSON字符串目标值方案

核心逻辑

你提供的字符串是两层嵌套JSON结构:

  • 外层是标准JSON对象,其中query字段存储了转义后的内层JSON字符串
  • 不需要硬编码字段路径,通过递归循环遍历所有层级的键值对,即可自动定位到目标键完成修改,遇到转义的JSON字符串会自动解析进入内层处理,修改完成后自动还原结构。

实现代码

import json

def loop_modify_json(obj, target_key, new_val):
    # 遍历当前层所有键值对
    for k, v in obj.items():
        # 命中目标键直接更新值
        if k == target_key:
            obj[k] = new_val
        # 当前值是字典,递归进入下一层遍历
        elif isinstance(v, dict):
            loop_modify_json(v, target_key, new_val)
        # 当前值是字符串时,尝试解析为内层JSON继续处理
        elif isinstance(v, str):
            try:
                inner_obj = json.loads(v)
                if isinstance(inner_obj, dict):
                    loop_modify_json(inner_obj, target_key, new_val)
                    # 内层修改完成后重新序列化为转义字符串,还原原有结构
                    obj[k] = json.dumps(inner_obj, separators=(',', ':'))
            except json.JSONDecodeError:
                # 非JSON格式字符串直接跳过
                continue

if __name__ == "__main__":
    # 原始字符串需先去掉高亮标记用的**,还原为合法JSON格式
    raw_json_str = '''{"query":"{\"format\":\"article-timeline\",\"from\":0,\"isLiveWirePage\":true,\"section\":\"/markets\",\"sections\":\"/markets\",\"size\":6,\"sort\":\"display_date:desc\",\"types\":\"\"}","d":"176","_website":"coindesk"}'''
    # 解析外层JSON为字典
    data = json.loads(raw_json_str)
    # 示例:把from字段的值从0修改为100,需要改其他字段直接替换参数即可
    loop_modify_json(data, target_key="from", new_val=100)
    # 转换回最终的JSON字符串
    result = json.dumps(data, separators=(',', ':'))
    print(result)

注意事项

原始样例里from字段值包裹的**是人工高亮标记,不属于JSON合法语法,正式处理前必须移除,否则会导致JSON解析失败。
该方法支持任意深度的嵌套JSON结构,也支持多层转义JSON字符串的自动解析修改,不需要提前预知字段所在层级。

内容的提问来源于stack exchange,提问作者cristian olivares

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:39:26