有没有办法在gjson中的数组内应用修饰符?

问题描述 投票:0回答:1

库 tidwall/gjson 允许我解析 json 字符串并对其应用修饰符(对值的自定义函数),但我没有找到对结构数组内的值应用修饰符的方法。

有一种方法可以向数组的值添加修饰符,但它不会返回包含更改后的值的原始数组,而是返回一个仅包含更改后的值的新数组。 例如

[
  {
    "x":5,
    "y":7
  },
  ...
]

如果我想创建一个修饰符将 x 的所有值加 1,它将返回一个整数列表,其中值是 x+1 的值,但这不是我想要的。

我想要 x 和 y 的结构列表,其中仅更改 x 的值。

有没有办法用 gjson 完成我想要的事情?如果没有还有其他方法吗?

json go
1个回答
0
投票

找到了方法。 给定 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"}]

这很奇怪,我认为这是一个错误,但我找到了一个解决方法,所以哦......

© www.soinside.com 2019 - 2024. All rights reserved.