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_如何定義「優雅」? –