Python JSONPath 递归替换:将所有包含"mobile"的属性值替换为"1234"
使用 jsonpath 库编写一个递归函数,将 JSON 对象中所有包含 "mobile" 的属性值替换为 "1234"。\n\n\n\n### 1. 导入库\n\n首先,我们需要导入 jsonpath 库和 json 库。\n\npython\nimport json\nfrom jsonpath_ng import jsonpath, parse\n\n\n### 2. 定义递归函数\n\n然后,定义一个递归函数 replace_mobile,接受一个 JSON 对象和要替换的目标字符串作为参数。\n\npython\ndef replace_mobile(json_obj, target):\n # 遍历 JSON 对象的所有属性\n for match in parse('$..*').find(json_obj):\n # 判断属性是否为字符串类型\n if isinstance(match.value, str):\n # 判断属性值是否包含目标字符串\n if target in match.value:\n # 替换属性值\n match.full_path.update(json_obj, target)\n # 判断属性是否为字典类型\n elif isinstance(match.value, dict):\n # 递归调用替换函数\n replace_mobile(match.value, target)\n\n\n### 3. 使用示例\n\n最后,使用 json.loads 函数将 JSON 字符串转换为 JSON 对象,并调用 replace_mobile 函数进行替换。\n\npython\n# JSON 字符串\njson_str = '''\n{\n \"name\": \"John\",\n \"age\": 30,\n \"address\": {\n \"street\": \"123 Main St\",\n \"city\": \"New York\",\n \"phone\": \"1234567890\"\n },\n \"mobile\": \"0987654321\"\n}\n'''\n\n# 将 JSON 字符串转换为 JSON 对象\njson_obj = json.loads(json_str)\n\n# 调用替换函数\nreplace_mobile(json_obj, \"mobile\")\n\n# 打印替换后的 JSON 对象\nprint(json.dumps(json_obj, indent=4))\n\n\n运行以上代码,输出结果如下:\n\njson\n{\n \"name\": \"John\",\n \"age\": 30,\n \"address\": {\n \"street\": \"123 Main St\",\n \"city\": \"New York\",\n \"phone\": \"1234567890\"\n },\n \"mobile\": \"1234\"\n}\n\n\n可以看到,mobile 属性的值已经被成功替换为 1234。
原文地址: http://www.cveoy.top/t/topic/pSoM 著作权归作者所有。请勿转载和采集!