【发布时间】:2013-11-09 11:08:04
【问题描述】:
为了便于阅读,我需要格式化一个大型 JSON 文件,但我发现的每个资源(大部分是在线资源)都不能处理超过 1-2 MB 的数据。我需要格式化大约 30 MB。有什么方法可以做到这一点,或者有什么方法可以编写代码来做到这一点?
【问题讨论】:
-
您只需要阅读它吗?或者您想在将输出发送给客户端之前对其进行格式化?
标签: json data-processing
为了便于阅读,我需要格式化一个大型 JSON 文件,但我发现的每个资源(大部分是在线资源)都不能处理超过 1-2 MB 的数据。我需要格式化大约 30 MB。有什么方法可以做到这一点,或者有什么方法可以编写代码来做到这一点?
【问题讨论】:
标签: json data-processing
使用 python >= 2.6,您可以执行以下操作:
对于 Mac/Linux 用户:
cat ugly.json | python -mjson.tool > pretty.json
Windows 用户(感谢dnk.nitro 的评论):
type ugly.json | python -mjson.tool > pretty.json
【讨论】:
type ugly.json | python -mjson.tool > pretty.json
jq 可以在几秒钟内格式化或美化约 100MB 的 JSON 文件:
jq '.' myLargeUnformattedFile.json > myLargeBeautifiedFile.json
上面的命令会在~10秒内美化一个~120MB的单行文件,jq除了简单的格式化之外,还为你提供了很多json操作能力,见their tutorials。
【讨论】:
jsonpps 是唯一为我工作的 (https://github.com/bazaarvoice/jsonpps)。
与我尝试过的 jq、jsonpp 和其他人不同,它不会将所有内容加载到 RAM。
一些关于安装和使用的有用提示:
下载地址:https://repo1.maven.org/maven2/com/bazaarvoice/jsonpps/jsonpps/1.1/jsonpps-1.1.jar
快捷方式(适用于 Windows):
@echo off
java -Xms64m -Xmx64m -jar %~dp0\jsonpps-1.1.jar %*
快捷方式使用示例:
echo { "x": 1 } | jsonpps
echo { "x": 1 } | jsonpps -o output.json
jsonpps input.json -o output.json
【讨论】: