使用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}}

非常感谢。上述措施奏效,谢谢大家;上述措施奏效了。