Python操作JSON:增删改复杂节点
172 浏览量
更新于2024-09-01
收藏 55KB PDF 举报
本文主要介绍如何在Python中指定JSON的某个节点进行增加、删除和修改操作,通过封装一个类提供便利的方法。
在处理复杂的JSON数据结构时,特别是当需要更新嵌套多层的节点时,操作往往变得繁琐。为了简化这一过程,可以使用Python编写一个类,该类提供三个核心函数:`addkv`(添加键值对)、`delkv`(删除节点)和`modkv`(修改节点)。关键在于确定JSON路径,即找到目标节点的完整引用路径。
例如,对于以下JSON数据:
```json
dataA = {
"code": 0,
"data": {
"areaCode": "86",
"avatar": "",
"countryCode": "86",
"customer_risk_type": "0",
"customer": {
"name": "syc",
"sex": "m"
}
},
"valuelist": [
{
"expiration": 1578043337756,
"extendStatusBit": 1,
"firstLogin": "True",
"id": 11529
},
{
"expiration": 1578043337757,
"extendStatusBit": 2,
"firstLogin": "True",
"id": 11539,
"transaction": [
{"stockcode": "601235"},
{"price": 2.12}
]
},
...
],
"msg": "成功"
}
```
如果我们需要修改`data`下的`customer`对象的`name`字段,路径将是:`/data/customer/name`;如果要修改`valuelist`列表中第二个元素的`transaction`列表的第一个元素的`stockcode`,路径则为:`/valuelist/(int)1/transaction/(int)0/stockcode`。这里,`(int)`用于标识路径中的数字是列表索引,而非字面量。
1、**添加键值对**(`addkv`函数)
`addkv`函数用于在指定路径下添加新的键值对。如果目标路径不存在,它将创建路径直到到达目标位置。例如,向`customer`添加新的属性`age`并赋值为25,路径应为`/data/customer/age`。
2、**删除节点**(`delkv`函数)
`delkv`函数用于删除JSON中的某个节点。例如,要删除`customer`的`sex`属性,路径应为`/data/customer/sex`。
3、**修改节点**(`modkv`函数)
`modkv`函数用于修改已存在的节点值。例如,要将`customer`的`name`改为`xyz`,路径应为`/data/customer/name`,并将新的值传递给函数。
实现这些功能的关键在于正确解析路径并递归地遍历JSON结构。可以使用递归函数来处理路径的各个部分,包括列表索引。同时,需要注意处理特殊情况,如列表中不存在的索引,或者尝试修改不存在的节点等。
通过这样的封装,操作深层嵌套的JSON结构变得更加简单,提高了代码的可读性和维护性。这在处理大量JSON数据时尤其有用,能够避免手动逐级查找和修改节点的困扰。
点击了解资源详情
点击了解资源详情
点击了解资源详情
209 浏览量
2020-10-20 上传
2013-11-20 上传
2019-01-13 上传
2019-02-11 上传
2021-04-27 上传
weixin_38586186
- 粉丝: 9
- 资源: 943