假设我们有一个 JSON:
{
"a" : 23,
"b" : "hi",
"c": [90],
"d": [{"j" : 80}]
}
我想把它转换成
{
"a" : [23],
"b" : ["hi"],
"c": [90],
"d": [{"j" : 80}]
}
如何使用 jq
执行此操作?
最佳答案
您可以根据值的类型
使用if
语句更新|=
每个字段.[]
:
.[] |= if type == "array" then . else [.] end
{
"a": [
23
],
"b": [
"hi"
],
"c": [
90
],
"d": [
{
"j": 80
}
]
}
除了检查 type
与 array
相比,您还可以只更新 scalars
,它们都是不可迭代的,即没有数组和没有对象:
(.[] | scalars) |= [.]
{
"a": [
23
],
"b": [
"hi"
],
"c": [
90
],
"d": [
{
"j": 80
}
]
}
关于json - jq:用列表包裹所有一级原子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73385429/