如何使用jq从命令行将文本文件转换为单个JSON字符串?
命令行将文本文件转为单个JSON字符串
可以通过以下几种常用命令行工具实现需求:
使用jq工具
jq是处理JSON的轻量工具,能直接将文本内容转义为合法的单个JSON字符串:
jq -Rs . input.txt > output.json
-R:将输入识别为原始字符串而非JSON格式-s:把所有输入行合并成单个字符串.:输出处理后的最终字符串
执行后,output.json中会生成包含转义换行符\n和正确双引号的单个JSON字符串,不会产生字典或多字符串结构。
使用Python(无额外依赖)
如果系统自带Python,可通过一行命令完成转换:
python -c "import json,sys; print(json.dumps(sys.stdin.read()))" < input.txt > output.json
json.dumps()会自动处理字符串中的双引号、换行符等特殊字符,确保输出为标准的单个JSON字符串
使用awk(适用于轻量环境)
在没有jq和Python的环境中,可借助awk实现:
awk '{ gsub(/"/, "\\\""); printf "%s\\n", $0 }' input.txt | awk '{printf "\"%s\"", $0}' > output.json
- 第一步转义文本中的双引号,并给换行添加转义符
- 第二步为整个内容包裹外层双引号,形成合法JSON字符串
注意:以上方法都会完整保留原文本内容,同时处理所有特殊字符,输出符合要求的单个JSON字符串。
内容的提问来源于stack exchange,提问作者Mathieu Longtin
相关产品推荐
相关产品推荐

