jq,如果它是一个具有已解析 JSON 表示的字符串,则重新分配字段
jq, re-assign field if it is a string with its parsed JSON representation
我有以下 JSON:
[
{
"test": "[\"example\"]"
},
{
"test": ["example2"]
}
]
对于每个对象,我想 1] 检查 "test" 是否是一个字符串,2] 如果测试是一个字符串,将其解析为实际的 JSON 数组,然后重新分配它.所以输出将是:
[
{
"test": ["example"]
},
{
"test": ["example2"]
}
]
我试过以下代码:map(if .test|type == "string" then .test= .test|fromjson else . end)
。但是,我收到一条错误消息,指出只能解析字符串。我假设这是因为 jq 认为 .test
不是一个字符串,但是,我知道 .test 是一个字符串,因为 if 语句,所以我不确定哪里出了问题。
解决方案原来是
map(if .test|type == "string" then .test=(.test|fromjson) else . end)
我猜.test=.test|fromjson
迷糊jq
jq过滤器可以简化为:
map(if .test|type == "string" then .test |= fromjson else . end)
甚至:
map(.test |= if type == "string" then fromjson else . end)
我有以下 JSON:
[
{
"test": "[\"example\"]"
},
{
"test": ["example2"]
}
]
对于每个对象,我想 1] 检查 "test" 是否是一个字符串,2] 如果测试是一个字符串,将其解析为实际的 JSON 数组,然后重新分配它.所以输出将是:
[
{
"test": ["example"]
},
{
"test": ["example2"]
}
]
我试过以下代码:map(if .test|type == "string" then .test= .test|fromjson else . end)
。但是,我收到一条错误消息,指出只能解析字符串。我假设这是因为 jq 认为 .test
不是一个字符串,但是,我知道 .test 是一个字符串,因为 if 语句,所以我不确定哪里出了问题。
解决方案原来是
map(if .test|type == "string" then .test=(.test|fromjson) else . end)
我猜.test=.test|fromjson
迷糊jq
jq过滤器可以简化为:
map(if .test|type == "string" then .test |= fromjson else . end)
甚至:
map(.test |= if type == "string" then fromjson else . end)