使用jQ将JSON字典转换为JSON行
我有一个名为使用jQ将JSON字典转换为JSON行,json,jq,jsonlines,Json,Jq,Jsonlines,我有一个名为some_file.Json的Json文件: { "dog": { "breed_1": 12, "breed_2": 20, }, "cat": { "breed_1": 6, "breed_2": 8, }, } 我想将其转换为以
some_file.Json的Json文件:
{
"dog": {
"breed_1": 12,
"breed_2": 20,
},
"cat": {
"breed_1": 6,
"breed_2": 8,
},
}
我想将其转换为以下json行文件:
{"dog":{"breed_1":12,"breed_2":20}}
{"cat":{"breed_1":6,"breed_2":8}}
请注意,原始JSON中的每个键值现在都在一行上
我可以用任何编程语言为此编写一些代码。但我想知道如何使用jQ将JSON转换为JSON行文件
我尝试了,cat some_file.json | jq.[].-c>lines_file.jsonl
,它返回了
{"breed_1": 12, "breed_2": 20}
{"breed_1": 6, "breed_2": 8}
狗
和猫
键消失。这里有一种可能性:
jq -c 'keys_unsorted[] as $k | {($k): .[$k]}'
递归分解
将此功能封装在递归函数中可能是值得的:
def unbundle:
if type == "object"
then keys_unsorted[] as $k
| {($k): .[$k] | unbundle}
else . end;
就您的示例而言,unbundle
将产生:
{"dog":{"breed_1":12}}
{"dog":{"breed_2":20}}
{"cat":{"breed_1":6}}
{"cat":{"breed_2":8}}
这里有一种可能性:
jq -c 'keys_unsorted[] as $k | {($k): .[$k]}'
递归分解
将此功能封装在递归函数中可能是值得的:
def unbundle:
if type == "object"
then keys_unsorted[] as $k
| {($k): .[$k] | unbundle}
else . end;
就您的示例而言,unbundle
将产生:
{"dog":{"breed_1":12}}
{"dog":{"breed_2":20}}
{"cat":{"breed_1":6}}
{"cat":{"breed_2":8}}
非常感谢。上述措施奏效,谢谢大家;上述措施奏效了。