0

我有一个名为的 Json 文件some_file.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}

dogcat消失。

4

1 回答 1

2

这是一种可能性:

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}}
于 2021-02-05T21:58:59.973 回答