clang-格式化 json 文件

clang-format a json file

我有一个 json 文件。如果我在上面 运行 clang-format,它会将其格式化为代码(丑陋)。

{
  "name" : "My great app",
           "description" : "It's really cool.",
                           "version" : "0.0.1"
}

如果我把 'foo = ' 放在文件的开头,那很好,但它不再是 json。

foo = {
  "name" : "My great app",
  "description" : "It's really cool.",
  "version" : "0.0.1"
}

如何获得 clang-format 以格式化 json 文件中的裸对象,如第二个示例所示?

我个人会使用 python,使用 json 的漂亮打印机包:

cat mydata.json | python -mjson.tool

如果您不喜欢默认设置:

cat mydata.json | python -c 'import json, sys; print(json.dumps(json.load(sys.stdin), indent=4, sort_keys=True))'

否则,我没有安装clang-format,为了打印漂亮,我宁愿使用现有的工具。

N.B.: 您也可以在 vim 内完成并在完整文件选择上使用 == 普通命令 ☺

我喜欢使用的另一个程序是jq。它非常易于使用,文档也很棒。例如,对于简单的重新格式化,您可以这样做:

jq . test.json

如果您的系统上有 json_pp,您还可以:

cat test.json | json_pp

我一直在努力让这个被接受,https://reviews.llvm.org/D93528,这通过在文件的前面添加一个隐藏的“x =”来完成你的建议,然后在使用替换机制格式化后删除它.

在此之前,我认为您可以使用 clang-apply-replacements 做类似的事情