【发布时间】:2017-03-11 00:04:27
【问题描述】:
jq 是漂亮打印任意 JSON 的最佳选择吗?
cat my.json | jq . 漂亮地打印给定的 JSON,但将每个字段扩展为单独的行。
但是如果某些字段是重复的,例如点列表,该怎么办?与模式匹配的字段如何在一行中使用--compact-output 格式化?
例如,将下面的“coords”和“list”字段格式化为一行:
[
{
"field1": {
"a": "",
"b": ""
"list": [{ "name": "x", "score": 1, "rect": { "x": 156, "y": 245, "w": 35, "h": 45 }, ... ]
},
"field2": 2,
"coords": [{ "x": 100, "y": 400 },{ "x": 100, "y": 0 }]
},
....
]
--compact-output 格式的字段可以换行(无需中断这些长行)。
【问题讨论】:
-
我不知道解决方案,但这是一个已知问题。 github.com/stedolan/jq/issues/643
-
我想可以编写一个过滤器来手动格式化某些对象,如果它是流式传输的。感兴趣的字段将被输出到缓冲区以进行压缩,而其他字段将被转储到输出。然后当到达字段的末尾时,输出缓冲区。作为一个流,您可以获得 json 对象和数组的开始和停止及其路径。那么它当然必须是原始输出。
标签: json pretty-print jq