库 tidwall/gjson 允许我解析 json 字符串并对其应用修饰符(对值的自定义函数),但我没有找到对结构数组内的值应用修饰符的方法。
有一种方法可以向数组的值添加修饰符,但它不会返回包含更改后的值的原始数组,而是返回一个仅包含更改后的值的新数组。 例如
[
{
"x":5,
"y":7
},
...
]
如果我想创建一个修饰符将 x 的所有值加 1,它将返回一个整数列表,其中值是 x+1 的值,但这不是我想要的。
我想要 x 和 y 的结构列表,其中仅更改 x 的值。
有没有办法用 gjson 完成我想要的事情?如果没有还有其他方法吗?
找到了方法。 给定 json:
{
"age":37,
"friends": [
{"first": "Dale", "last": "Murphy", "age": 44},
{"first": "Roger", "last": "Craig", "age": 68},
{"first": "Jane", "last": "Murphy", "age": 47}
]
}
路径
friends.#.{first,"age":age.@tostr}
将输出:
[{"first":"Dale","age":"44"},{"first":"Roger","age":"68"},{"first":"Jane","age":"47"}]
这样我就可以控制内部数组结构中的内容,这正是我想要的。
请注意,
"age":
部分至关重要,如果我不设置它,输出将如下所示:
[{"first":"Dale","@tostr":"44"},{"first":"Roger","@tostr":"68"},{"first":"Jane","@tostr":"47"}]
这很奇怪,我认为这是一个错误,但我找到了一个解决方法,所以哦......