【问题标题】:convert long line of json file to readable file [closed]将长行的json文件转换为可读文件[关闭]
【发布时间】:2019-12-23 16:21:12
【问题描述】:

我需要有关如何将长行 json 文件转换为可读文件的帮助

这是json格式

"version": 1, "partitions": [{"topic": "Topic3", "partition": 7, "log_dirs": ["any"], "replicas": [3, 0, 2]}, {"topic": "Topic3", "partition": 4, "log_dirs": ["any"], "replicas": [3, 0, 2]}, {"topic": "Topic3", "partition": 15, "log_dirs": ["any"], "replicas": [2, 3, 0]}, {"topic": "Topic3", "partition": 9, "log_dirs": ["any"], "replicas": [2, 3, 0]}, {"topic": "Topic3", "partition": 12, "log_dirs": ["any"], "replicas": [2, 3, 0]}, {"topic": "Topic3", "partition": 1, "log_dirs": ["any"], "replicas": [3, 2, 0]}, {"topic": "CatchAllTopic", "partition": 0, "log_dirs": ["any"], "replicas": [0, 3, 2]}, {"topic": "Topic3", "partition": 17, "log_dirs": ["any"], "replicas": [0, 3, 2]}, {"topic": "Topic3", "partition": 6, "log_dirs": ["any"], "replicas": [2, 0, 3]}, {"topic": "Topic3", "partition": 3, "log_dirs": ["any"], "replicas": [2, 0, 3]}, {"topic": "Topic3", "partition": 14, "log_dirs": ["any"], "replicas": [0, 2, 3]}, {"topic": "Topic3", "partition": 0, "log_dirs": ["any"], "replicas": [2, 0, 3]}, {"topic": "Topic3", "partition": 11, "log_dirs": ["any"], "replicas": [0, 2, 3]}, {"topic": "Topic3", "partition": 16, "log_dirs": ["any"], "replicas": [3, 0, 2]}, {"topic": "Topic3", "partition": 8, "log_dirs": ["any"], "replicas": [0, 3, 2]}, {"topic": "Topic3", "partition": 2, "log_dirs": ["any"], "replicas": [0, 3, 2]}, {"topic": "Topic3", "partition": 13, "log_dirs": ["any"], "replicas": [3, 0, 2]}, {"topic": "Topic3", "partition": 5, "log_dirs": ["any"], "replicas": [0, 3, 2]}, {"topic": "Topic3", "partition": 10, "log_dirs": ["any"], "replicas": [3, 0, 2]}]}

或者实际上更像这样:

虽然我们希望文件为以下格式

更多文件.json

{"partitions":
       [{"topic": "foo",
         "partition": 1,
          "replicas": [1,2,3],
          "log_dirs": ["any","any","any"]
       }],
.
.
.
.
.

【问题讨论】:

  • 也许jq . file.json?
  • 除非你能提供更多的上下文,否则@dibery 的建议听起来是对的。
  • 查看我的问题中的更新
  • @Judy 使用--compact-output 选项到jq 使其在一行上打印输出。
  • 两个示例输入都不是有效的 JSON,并且由于两者都包含尾随 },因此看起来最初的 { 也丢失了。请澄清 - 本质上是关于有效 JSON 的问题还是关于修复损坏的数据以使其成为有效的 JSON 或其他问题?

标签: json linux bash shell jq


【解决方案1】:

如果由于某种原因无法安装 jq,您可以使用 Python 3 打印一个 json 字符串:

echo '{ "name" : "Matias", "age": 32 }' | python3 -c 'import sys
import json
print(json.dumps(json.load(sys.stdin), indent="  "))
'

这将打印:

{
  "name": "Matias",
  "age": 32
}

希望有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2021-09-09
    • 2013-09-16
    • 1970-01-01
    • 2018-02-10
    • 2021-04-27
    • 2015-09-16
    相关资源
    最近更新 更多