删除函数
json 包提供的 JSON 删除函数,用于移除指定路径的节点,并可选地清理因删除产生的空父节点。
Delete
签名:func Delete(jsonStr, path string, cfg ...Config) (string, error)
删除指定路径的值。
参数
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
jsonStr | string | 是 | JSON 字符串 |
path | string | 是 | 路径表达式 |
cfg | Config | 否 | 可选配置 |
示例
go
result, err := json.Delete(data, "user.temporary")
if err != nil {
panic(err)
}删除对象属性
go
// 删除单个属性
result, err := json.Delete(`{"user":{"name":"Alice","temp":"value"}}`, "user.temp")
// {"user":{"name":"Alice"}}删除数组元素
go
// 删除数组中的元素(索引从 0 开始)
result, err := json.Delete(`{"items":["a","b","c"]}`, "items[1]")
// {"items":["a","c"]}路径不存在
go
// 路径不存在时返回原 JSON 和错误
result, err := json.Delete(`{"a":1}`, "nonexistent.path")
if err != nil {
// err 包含 JsonsError,包装了 ErrPathNotFound
fmt.Println("删除失败:", err)
}
// result 仍为原始 JSON: {"a":1}DeleteClean
签名:func DeleteClean(jsonStr, path string, cfg ...Config) (string, error)
删除指定路径并自动清理产生的空值和空数组。
go
// 原始数据:{"user": {"temp": "value", "name": "test"}}
result, err := json.DeleteClean(data, "user.temp")
// {"user":{"name":"test"}}
// 如果删除后父对象为空,会继续清理
// {"user": {}} -> {}