0
是否有一种优雅的方式来复制每个数组项目中的对象?压扁数组在对象中
printf '{"a":"","b":[{},{}]}' | jq '{a:.a,b:.b[]}'
{"a":"","b":{}}
{"a":"","b":{}}
是否有一种优雅的方式来复制每个数组项目中的对象?压扁数组在对象中
printf '{"a":"","b":[{},{}]}' | jq '{a:.a,b:.b[]}'
{"a":"","b":{}}
{"a":"","b":{}}
这里的扩大的任意JSON对象的所有数组值密钥的编程方法:
def blowup(a):
def b(f): {(f): (.[f] | if type == "array" then .[] else . end)};
if a|length == 0 then {} else b(a[0]) + blowup(a[1:]) end;
blowup(keys)
实施例:
输入:{A:0,B:[1,2 ],C:[3,4]}
输出:
{"a":0,"b":1,"c":3}
{"a":0,"b":2,"c":3}
{"a":0,"b":1,"c":4}
{"a":0,"b":2,"c":4}
什么你有什么不对? –
它需要手动重建对象。 freenode上有人提出了一个很好的建议。虽然它仍然需要手动重建对象,但它更优雅一些:.b = .b []。 –
那么,如果你的目标是将对象的内部数组分割成新的独立对象,当然你将不得不“重建”新的对象。 _you_如何定义“优雅”? –