【发布时间】:2023-03-12 13:02:02
【问题描述】:
我正在尝试遍历一个对象并将任何作为有效 json 字符串的值(目前仅顶级,没有递归)转换为 json。
我认为答案在于使用正确的咒语,也许像with_entries(.value |= try fromjson) 这样的咒语,但我无法让它发挥作用。所以我把它分解了一下,尝试一些更简单的东西。
下面的对象列表怎么样 - 如果它是产生有效 json 的字符串,我只想解析每个对象的值键(现在让我们忽略无效的情况,它们可以返回 null)。
所以我尝试了这个:
$ jq -n '[{key: "one", value: 1},{key: "two", value: "{\"object\":true}"}] | map(.value |= try fromjson)'
[
{
"key": "one"
},
{
"key": "two"
}
]
即使two 键是有效的 json 字符串,值也都丢失了。
但是如果我用一个简单的数组尝试同样的方法,它会按预期工作:
$ jq -n '[1, "two", "{\"three\":3}"] | .[] | fromjson?'
{
"three": 3
}
所以我的问题是我在这里做错了什么? 提前感谢您的任何指点。
【问题讨论】:
-
我发现了可能是一个相关的问题,但我更喜欢下面给出的 Peak 的答案。 stackoverflow.com/questions/66101660/…