首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JSON行序列(JSONL)转换为JSON数组

将JSON行序列(JSONL)转换为JSON数组
EN

Stack Overflow用户
提问于 2020-03-11 22:02:30
回答 2查看 2.8K关注 0票数 3

我有一个文件,其中每一行都是一个JSON对象。我希望将该文件转换为JSON数组。

该文件如下所示:

代码语言:javascript
复制
{"address":"email1@foo.bar.com", "topic":"Some topic."}
{"address":"email2@foo.bar.com", "topic":"Another topic."}
{"address":"email3@foo.bar.com", "topic":"Yet another topic."}

我使用bash和jq。

我试过了

代码语言:javascript
复制
jq --slurp --raw-input 'split("\n")[:-1]' my_file

但这只是将每一行视为一个字符串,创建一个JSON字符串数组。

代码语言:javascript
复制
[
  "{\"address\":\"email1@foo.bar.com\", \"topic\":\"Some topic.\"}",
  "{\"address\":\"email2@foo.bar.com\", \"topic\":\"Another topic.\"}",
  "{\"address\":\"email3@foo.bar.com\", \"topic\":\"Yet another topic.\"}"
]

我想要:

代码语言:javascript
复制
[
  {"address":"email1@foo.bar.com", "topic":"Some topic."},
  {"address":"email2@foo.bar.com", "topic":"Another topic."},
  {"address":"email3@foo.bar.com", "topic":"Yet another topic."}
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-11 23:18:41

代码语言:javascript
复制
jq -n '[inputs]' <in.jsonl >out.json

...or,作为suggested by @borrible

代码语言:javascript
复制
jq --slurp . <in.jsonl >out.json
票数 5
EN

Stack Overflow用户

发布于 2020-03-12 01:31:12

对于手头的任务,使用jq的"slurp“选项或[inputs]会导致潜在的巨大资源浪费。

一个琐碎但高效的解决方案可以在awk中实现,如下所示:

代码语言:javascript
复制
awk 'BEGIN {print "[";} NF==0{next;} n=="" {print;n++;next;} {print ","; print;} END {print "]"}'

在jq中,可以使用foreachinputs实现一个等效的高效解决方案,并将其作为练习。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60637859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档