关于Unix:如何在shell脚本中漂亮地输出JSON?

How can I pretty-print JSON in a shell script?

是否有一个(Unix)shell脚本以人类可读的形式格式化JSON?

基本上,我希望它转换以下内容:

1
{"foo":"lorem","bar":"ipsum" }

…变成这样:

1
2
3
4
{
   "foo":"lorem",
   "bar":"ipsum"
}


使用python 2.6+,您只需执行以下操作:

1
2
3
4
5
6
echo '{"foo":"lorem","bar":"ipsum
<div class="suo-content">[collapse title=""]<ul><li>使用其他版本的python,您可以安装simplejson并使用python-msimplejson.tool。</li><li>您可以将它通过管道传输到<wyn>pygmentize -l javascript</wyn>上,以在命令行中获得语法颜色的输出。编辑:如果安装了Pygments,则为。</li><li>别名ppj='python-mjson.tool';echo'"foo":"lorem","bar":"ipsum"'ppj</li><li>一个很好的答案,我唯一要注意的是它确实会对输出上的键进行排序——这可能需要您注意。</li><li>在myy.vimrc"nnoremap<f5>:%!python-m json.tool<cr>:w<cr>"</li><li>这似乎是将Unicode字符转义到uxxxx中,这可能是一个缺点。</li><li>在查看RIAK或(其他支持JSON的服务器)输出时,这是一个非常方便的提示!例如curl blah.com:8089 python-mjson.tool,您绝对不需要安装或配置任何东西,但python通常已经存在了。</li><li>嘿,有人能在gedit中把它作为外部命令添加吗?编辑:得到;工具->管理外部toosl->new(+)->添加"python-mjson.tool"->选择输入=当前文档,输出=替换当前文档。干杯!</li><li>有人对XML也这么认为吗?</li><li>@mikewell stackoverflow.com/questions/16090869/&hellip;</li><li>并通过管道将输出添加到"colout-t json"来突出显示语法。首先需要"pip install colout"。</li><li>@用户1071136要在输出中保留Unicode字符,必须创建自己的脚本。import sys import json j=json.load(sys.stdin)json.dump(j,sys.stdout,确保_ascii=false,sort_keys=true,indent=4,分隔符=(',',':')</li><li>它不接受顶级数组,所以遗憾的是并不是所有的JSON都接受。</li><li>@Shrikantsharat:因为1.5版的Pygments也支持<wyn>json</wyn>类型。</li><li>我创建了一个别名:<wyn>alias pretty='python -mjson.tool | pygmentize -l json</wyn>,这样我就可以运行:<wyn>command params | pretty</wyn>。希望这有帮助。PS:如果有人设法将其扩展到a)删除我每次看到的curl输出和/或b)不排序JSON键;请告诉我,我将非常感谢。</li><li>如果json在一个文件中:<wyn>$ cat file.json | python -m json.tool</wyn>。</li><li>python-m json.tool作为一个json-pretty打印机的另一个问题是它并不总是打印有效的json值。例如,1E1000转换为无穷大。</li><li>python不支持非ascii</li><li>在python 3.5中进行了更改:现在输出的顺序与输入的顺序相同。使用<wyn>--sort-keys</wyn>按字母顺序对键排序。回应@chrisnash的评论。</li><li>你的bash_配置文件中有这个别名吗?</li><li>如果您使用的是MacOS,并且剪贴板上有一些JSON,您需要格式化<wyn>pbpaste | python -m json.tool | pbcopy</wyn>。</li><li>太神了!谢谢分享。另外,如果您已经将"-i"选项传递给了curl,那么它就不能像现在已经有了HTTP头那样漂亮地打印JSON了。</li><li>如果我想用<wyn>python -m json.tool &#47;path.json</wyn>来实现<wyn>cat</wyn>呢?</li><li>有没有更好的方法来格式化括号?(左括号和右括号使用同一列)</li><li>@clintatestwood-curl-s选项将抑制输出,例如<wyn>curl -s http:&#47;&#47;my_url&#47; | python -m json.tool</wyn>应该只打印JSON。</li><li>这实际上只是回答了如何在python或web上进行。这个问题的信似乎很满意,但我认为它的精神根本没有得到满足。3551票的上涨似乎是一种严重的过度反应。</li><li>需要安装哪个模块?我得到:usr/bin/python:<wyn>No module named json.module</wyn>。</li></ul>[/collapse]</div><hr><P>您可以使用:<wyn>jq</wyn>。</P><P>使用起来很简单,而且效果很好!它可以处理非常大的JSON结构,包括流。你可以找到他们的教程在这里。</P><P>下面是一个例子:</P>[cc]$ jq . <<< '{"foo":"lorem","bar":"ipsum" }'
{
 "bar":"ipsum",
 "foo":"lorem"
}

或者换句话说:

1
2
3
4
5
$ echo '{"foo":"lorem","bar":"ipsum" }' | jq .
{
 "bar":"ipsum",
 "foo":"lorem"
}


我使用JSON.stringify的"space"参数在javascript中漂亮地打印JSON。

实例:

1
2
3
// Indent with 4 spaces
JSON.stringify({"foo":"lorem","bar":"ipsum
<div class="suo-content">[collapse title=""]<ul><li>对于在node.js中调试对象,应该使用sys.inspect()而不是json.stringify()。原因如下:markhansen.co.nz/inspection-with-json-stringify</li><li>否决了操作是关于一个"*nix命令行脚本",这个答案是一个不同的上下文。</li><li>@danorton:js可以通过node.js和其他类似的解决方案从命令行中使用。</li><li>在unix命令行上使用<wyn>node -e"console.log(JSON.stringify(JSON.parse(process.argv[1]), null, '\t'));"</wyn>(使用nodejs)</li><li>node-e'var f=require("./package.json");console.log(f.name);'甚至更短:d:d:d</li><li>不需要控制台:<wyn>node -p"JSON.stringify(JSON.parse(process.argv[1]), null, '\t');"</wyn>也将结果输出到stdout。</li><li>json.stringify我总是使用</li><li>很糟糕,一个文件名和stdin的脚本是不同的</li><li><wyn>jid</wyn>调试json github.com/simeji/jid的好工具</li><li>@Lukaszwiktor如果你的尼克斯支持<wyn>&#47;dev&#47;stdin</wyn>,就不必了!</li></ul>[/collapse]</div><hr><P>我写了一个工具,有一个最好的"智能空白"格式化程序可用。它产生的可读性和详细输出比这里的大多数其他选项都要低。</P><P>下划线CLI</P><P>这就是"智能空白"的样子:</P><P><img src="//i1.wp.com/i.stack.imgur.com/936Jk.png" alt="></P><P>我可能有点偏向,但它是一个很棒的工具,可以从命令行打印和操作JSON数据。它的使用非常友好,并且有大量的命令行帮助/文档。这是一把瑞士军刀,我用它来完成1001个不同的小任务,用它做任何其他的事情都会让人感到非常恼火。</P><P>最新的用例:chrome,dev console,network tab,export all a s har file,"cat site.har underline select".url'--outmt text grep mydomain";现在我有了一个按时间顺序排列的列表,列出了在加载公司站点期间进行的所有URL提取。</P><P>漂亮的打印很容易:</P>[cc]underscore -i data.json print

同样的事情:

1
cat data.json | underscore print

同样,更明确的是:

1
cat data.json | underscore print --outfmt pretty

这个工具是我目前的热情项目,所以如果您有任何功能请求,我很有可能会解决它们。


I usually just do:

1
echo '{"test":1,"test2":2}' | python -mjson.tool

要检索选择的数据(在本例中,"测试"的值):

1
echo '{"test":1,"test2":2}' | python -c 'import sys,json;data=json.loads(sys.stdin.read()); print data["test"]'

如果JSON数据在文件中:

1
python -mjson.tool filename.json

如果您想一次完成所有操作,请使用身份验证令牌在命令行上使用curl

1
curl -X GET -H"Authorization: Token wef4fwef54te4t5teerdfgghrtgdg53" http://testsite/api/ | python -mjson.tool


多亏了J.F.Sebastian非常有用的指点,我想出了一个稍微增强的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/python

"""
Convert JSON data to human-readable form.

Usage:
  prettyJSON.py inputFile [outputFile]
"""

import sys
import simplejson as json


def main(args):
    try:
        if args[1] == '-':
            inputFile = sys.stdin
        else:
            inputFile = open(args[1])
        input = json.load(inputFile)
        inputFile.close()
    except IndexError:
        usage()
        return False
    if len(args) < 3:
        print json.dumps(input, sort_keys = False, indent = 4)
    else:
        outputFile = open(args[2],"w")
        json.dump(input, outputFile, sort_keys = False, indent = 4)
        outputFile.close()
    return True


def usage():
    print __doc__


if __name__ =="__main__":
    sys.exit(not main(sys.argv))


如果您使用npm和node.js,那么可以执行npm install -g json,然后通过json传输该命令。做json -h以获得所有选项。它还可以拉出特定的字段,并用-i对输出进行着色。

1
curl -s http://search.twitter.com/search.json?q=node.js | json


在*nix上,从stdin读取和写入stdout效果更好:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
"""
Convert JSON data to human-readable form.

(Reads from stdin and writes to stdout)
"""

import sys
try:
    import simplejson as json
except:
    import json

print json.dumps(json.loads(sys.stdin.read()), indent=4)
sys.exit(0)

把这个放在你的路径和chmod +x中的一个文件中(我用anc的答案命名我的"prettyjson"),你就可以走了。


对于Perl,使用CPAN模块JSON::XS。它安装了一个命令行工具json_xs

验证:

1
json_xs -t null < myfile.json

将json文件src.json美化为pretty.json

1
< src.json json_xs > pretty.json

如果您没有json_xs,请尝试json_pp。"pp"用于"pure perl"&ndash;该工具仅在Perl中实现,不绑定到外部C库(这是xs的意思,perl的"扩展系统")。


It is not too simple with a native way with the jq tools.

For example:

1
cat xxx | jq .


The JSON Ruby Gem is bundled with a shell script to prettify JSON:

1
2
sudo gem install json
echo '{"foo":"bar" }' | prettify_json.rb

脚本下载:gist.github.com/3738968


更新我正在使用jq,如另一个答案中建议的那样。它在过滤JSON方面非常强大,但在最基本的方面,它也是一种非常棒的方式来打印JSON以供查看。

jsonpp是一个非常好的命令行json漂亮的打印机。

从自述文件:

Pretty print web service responses like so:

1
curl -s -L http://<!---->t.co/tYTq5Pu | jsonpp

and make beautiful the files running around on your disk:

1
jsonpp data/long_malformed.json

如果您使用的是Mac OS X,则可以使用ecx1(7)。如果没有,您可以简单地将二进制文件复制到您的$PATH中的某个位置。


Try pjson。它有颜色!

echo '{

pip一起安装:

? pip install pjson

然后将任何JSON内容传输到pjson


That's how I do it:

1
curl yourUri | json_pp

It shortens the code and gets the job done.


1
2
3
4
5
6
7
8
$ echo '{"foo":"lorem","bar":"ipsum" }' \
> | python -c'import fileinput, json;
> print(json.dumps(json.loads("".join(fileinput.input())),
>                  sort_keys=True, indent=4))'
{
   "bar":"ipsum",
   "foo":"lorem"
}

注意:这不是一种方法。

在Perl中相同:

1
2
3
4
5
6
7
$ cat json.txt \
> | perl -0007 -MJSON -nE'say to_json(from_json($_, {allow_nonref=>1}),
>                                     {pretty=>1})'
{
  "bar" :"ipsum",
  "foo" :"lorem"
}

注2:如果你跑

1
2
3
4
echo '{"Düsseldorf":"lorem","bar":"ipsum" }' \
| python -c'import fileinput, json;
print(json.dumps(json.loads("".join(fileinput.input())),
                 sort_keys=True, indent=4))'

可读性很好的单词将被u编码

1
2
3
4
{
   "D\u00fcsseldorf":"lorem",
   "bar":"ipsum"
}

如果管道的其余部分能够很好地处理Unicode,并且您希望JSON也对人友好,那么只需使用ensure_ascii=False

1
2
3
4
echo '{"Düsseldorf":"lorem","bar":"ipsum" }' \
| python -c'import fileinput, json;
print json.dumps(json.loads("".join(fileinput.input())),
                 sort_keys=True, indent=4, ensure_ascii=False)'

你会得到:

1
2
3
4
{
   "Düsseldorf":"lorem",
   "bar":"ipsum"
}


我用JSHON来做你所描述的。只是运行:

1
echo $COMPACTED_JSON_TEXT | jshon

您还可以传递参数来转换JSON数据。


或者,与露比:

1
echo '{"foo":"lorem","bar":"ipsum" }' | ruby -r json -e 'jj JSON.parse gets'


Check out Jazor. It's a simple command line JSON parser written in Ruby.

1
2
gem install jazor
jazor --help


Simply pipe the output to jq ..

Example:

1
twurl -H ads-api.twitter.com '.......' | jq .


JSONLint has an open-source implementation on GitHub that can be used on the command line or included in a Node.js project.

1
npm install jsonlint -g

然后

1
jsonlint -p myfile.json

1
curl -s"http://api.twitter.com/1/users/show/user.json" | jsonlint | less


Vanilla Bash

A simple Bash script (grep/awk) for pretty JSON printing, without third-party install:

json_pretty.sh

1
2
3
4
#/bin/bash

grep -Eo '"[^"]*" *(: *([0-9]*|"[^"]*")[^{}\["]*|,)?|[^"\]\[\}\{]*|\{|\},?|\[|\],?|[0-9 ]*,?' | awk '{if ($0 ~ /^[}\]]/ ) offset-=4; printf"%*c%s
", offset,"", $0; if ($0 ~ /^[{\[]/) offset+=4}'

实例:1)在控制台中读取文件和漂亮的打印

1
cat file.json | json_pretty.sh

2)与Windows Git Bash一起使用,从文件到文件(基于UTF-8):

1
cat fileIn.json |sh.exe json_pretty.sh > fileOut.json


侏儒

我将python的json.tool与pygmentize结合在一起:

1
2
3
echo '{"foo":"bar
<div class="suo-content">[collapse title=""]<ul><li>有时需要使用<wyn>pygmentize -l json</wyn>进行染色。</li><li>用APT包<wyn>python-pygments</wyn>安装,即<wyn>apt-get install python-pygments</wyn></li></ul>[/collapse]</div><hr><P>使用Perl,如果您从CPAN安装json::pp,您将获得json_pp命令。从B Bycroft那里偷了一个例子:</P>[cc][pdurbin@beamish ~]$ echo '{"foo":"lorem","bar":"ipsum
<hr><P>我建议使用json::xs perl模块中包含的json-xs命令行实用程序。JSON::XS是用于序列化/反序列化JSON的Perl模块,在Debian或Ubuntu计算机上,您可以这样安装它:</P>[cc]sudo apt-get install libjson-xs-perl

它显然也可以在CPAN上使用。

要使用它来格式化从URL获得的JSON,您可以使用curl或wget,如下所示:

1
$ curl -s http://page.that.serves.json.com/json/ | json_xs

或者:

1
$ wget -q -O - http://page.that.serves.json.com/json/ | json_xs

要格式化文件中包含的JSON,可以执行以下操作:

1
$ json_xs < file-full-of.json

重新格式化为yaml,有些人认为它比json更具人类可读性:

1
$ json_xs -t yaml < file-full-of.json


jj is super-fast, can handle ginormous JSON documents economically, does not mess with valid JSON numbers, and is easy to use, e.g.

1
jj -p # for reading from STDIN

or

1
jj -p -i input.json

It is (2018) still quite new so maybe it won’t handle invalid JSON the way you expect, but it is easy to install on major platforms.


  • brew install jq
  • command + | jq
  • (example: curl localhost:5000/blocks | jq)
  • Enjoy!
  • enter image description here


    使用以下命令安装yajl工具:

    sudo apt-get install yajl-tools

    然后,

    echo '{"foo":"lorem","bar":"ipsum


    以我的经验,江户十一〔十三〕是非常好的。我用它的json_reformat命令在vim中打印.json文件,在我的.vimrc中放入以下行:

    1
    autocmd FileType json setlocal equalprg=json_reformat

    You can use this simple command to achieve the result:

    1
    echo"{ "foo": "lorem", "bar": "ipsum" }"|python -m json.tool

    如果php大于等于5.4,则为php版本。

    1
    2
    alias prettify_json=php -E '$o = json_decode($argn); print json_encode($o, JSON_PRETTY_PRINT);'
    echo '{"a":1,"b":2}' | prettify_json


    bat is a cat clone with syntax highlighting:

    Example:

    1
    echo '{"bignum":1e1000}' | bat -p -l json

    -p will output without headers, and -l will explicitly specify the language.

    It has colouring and formatting for JSON and does not have the problems noted in this comment: How can I pretty-print JSON in a shell script?


    Use Ruby in one line:

    1
    echo '{"test":1,"test2":2}' | ruby -e"require 'json'; puts JSON.pretty_generate(JSON.parse(STDIN.read))"

    And you can set an alias for this:

    1
    alias to_j="ruby -e "require 'json';puts JSON.pretty_generate(JSON.parse(STDIN.read))""

    Then you can use it more conveniently

    1
    2
    3
    4
    5
    6
    echo '{"test":1,"test2":2}' | to_j

    {
     "test": 1,
     "test2": 2
    }

    And if you want display JSON with color, your can install awesome_print,

    1
    gem install awesome_print

    then

    1
    alias to_j="ruby -e "require 'json';require 'awesome_print';ap JSON.parse(STDIN.read)""

    Try it!

    1
    echo '{"test":1,"test2":2,"arr":["aa","bb","cc"] }' | to_j

    Enter image description here


    我用的是httpie

    1
    $ pip install httpie

    你可以这样使用它

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     $ http PUT localhost:8001/api/v1/ports/my
     HTTP/1.1 200 OK
     Connection: keep-alive
     Content-Length: 93
     Content-Type: application/json
     Date: Fri, 06 Mar 2015 02:46:41 GMT
     Server: nginx/1.4.6 (Ubuntu)
     X-Powered-By: HHVM/3.5.1

     {
        "data": [],
        "message":"Failed to manage ports in 'my'. Request body is empty",
        "success": false
     }

    这里有一个比json的prettify命令更好的Ruby解决方案。宝石colorful_json相当不错。

    安装彩色宝石echo'"foo":"lorem","bar":"ipsum


    J.F.Sebastian的解决方案在Ubuntu8.04中对我不起作用。下面是一个修改过的Perl版本,它与旧的1.x JSON库一起使用:

    1
    2
    perl -0007 -MJSON -ne 'print objToJson(jsonToObj($_, {allow_nonref=>1}), {pretty=>1}),"
    ";'

    1
    2
    $ sudo apt-get install edit-json
    $ prettify_json myfile.json


    工具ydump是一个json漂亮的打印机:

    1
    2
    3
    4
    5
    $ ydump my_data.json
    {
     "foo":"lorem",
     "bar":"ipsum"
    }

    或者您可以在json中输入管道:

    1
    2
    3
    4
    5
    6
    $ echo '{"foo":"lorem","bar":"ipsum
    <hr><P>下面介绍如何使用groovy脚本。</P><P>创建一个groovy脚本,比如说"漂亮的打印"</P>[cc]#!/usr/bin/env groovy

    import groovy.json.JsonOutput

    System.in.withReader { println JsonOutput.prettyPrint(it.readLine()) }

    使脚本可执行:

    1
    chmod +x pretty-print

    现在从命令行,

    1
    2
    3
    4
    5
    6
    7
    echo '{"foo":"lorem","bar":"ipsum
    <div class="suo-content">[collapse title=""]<ul><li>尽管我非常喜欢groovy,但由于JVM的开销,它并不适合这样的小脚本。我的非正式测量显示<wyn>jq</wyn>大约快50倍。</li></ul>[/collapse]</div><hr>
    <p>
    For Node.js you can also use the"util" module. It uses syntax-highlighting, smart indentation, removes quotes from keys and just makes the output as pretty as it gets.
    </p>

    [cc]cat file.json | node -e"process.stdin.pipe(new require('stream').Writable({write: chunk =>  {console.log(require('util').inspect(JSON.parse(chunk), {depth: null, colors: true}))}}))"

    有Tidyjson。

    它是C,所以也许你可以让它用mono编译,然后在*nix上工作。但是没有保证,对不起。


    使用javascript/node.js:看看VKbeautify.js插件,它为JSON和XML文本提供了漂亮的打印。

    它是用普通的javascript编写的,小于1.5 kb(小型化),速度非常快。


    I'm the author of json-liner. It's a command line tool to turn JSON into a grep friendly format. Give it a try.

    1
    2
    3
    4
    5
    6
    7
    $ echo '{"a": 1,"b": 2}' | json-liner
    /%a 1
    /%b 2
    $ echo '["foo","bar","baz"]' | json-liner
    /@0 foo
    /@1 bar
    /@2 baz

    如果安装了node.js,可以使用一行代码单独创建一个。创建一个文件:

    > vim pretty

    1
    2
    3
    #!/usr/bin/env node

    console.log(JSON.stringify(JSON.parse(process.argv[2]), null, 2));

    添加执行权限:

    > chmod +x pretty

    > ./pretty '{"foo":"lorem","bar":"ipsum


    https://github.com/aidanmelen/json_pretty_print

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    from __future__ import unicode_literals
    from __future__ import absolute_import
    from __future__ import print_function
    from __future__ import division

    import json
    import jsonschema

    def _validate(data):
        schema = {"$schema":"http://json-schema.org/draft-04/schema#
    <p><center>[wp_ad_camp_5]</center></p><hr><P>下面是一个绝妙的一行程序:</P>[cc]echo'"foo":"lorem","bar":"ipsum<hr>
    <p>
    A one-line solution using Node.js will look like this:
    </p>

    [cc]$ node -e"console.log( JSON.stringify( JSON.parse(require('fs').readFileSync(0) ), 0, 1 ))"

    For example:

    1
    $ cat test.json | node -e"console.log( JSON.stringify( JSON.parse(require('fs').readFileSync(0) ), 0, 1 ))"

    1
    2
    3
    gem install jsonpretty
    echo '{"foo":"lorem","bar":"ipsum
    <hr><P>如果您不介意使用第三方工具,您可以简单地转到jsonprettyprint.org。这是针对无法在计算机上安装软件包的情况。</P>[cc]curl -XPOST https://jsonprettyprint.org/api -d '{"user" : 1}'


    您可以使用smk:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo'"foo":"lorem","bar":"ipsum<hr><P>另外,一定要检查jsonfui:一个支持折叠的命令行json查看器。</P><hr>
    <p>
    You can use Xidel.
    </p>

    <blockquote>
      <p>
    Xidel is a command line tool to download and extract data from HTML/XML pages or JSON-APIs, using CSS, XPath 3.0, XQuery 3.0, JSONiq or pattern templates. It can also create new or transformed XML/HTML/JSON documents.
    </p>
    </blockquote><P>默认情况下,xidel pretty打印:</P>[cc]$xidel-s--e'$json'<<<'"foo":"lorem","bar":"ipsum<hr><P>这些方法都没有解析我的JSON文件。</P><P>我的问题类似于帖子google数据源json是否无效?.</P><P>对那篇文章的回答帮助我找到了解决办法。</P><P>它被认为是没有字符串键的无效JSON。</P>[cc]{id:'name',label:'Name',type:'string'}

    必须是:

    1
    2
    {"id":"name","label":"Name","type":"string
    <div class="suo-content">[collapse title=""]<ul><li>JSON不允许使用单引号作为分隔符,一个健全的JSON解析器应该拒绝这样的输入。</li><li>最后两个链接似乎已断开("deron.meranda.us的服务器响应时间太长")。</li></ul>[/collapse]</div><hr><P>我知道原来的文章要求有一个shell脚本,但是有这么多有用的和不相关的答案,可能对原作者没有帮助。增加无关性:)</P><P>顺便说一句,我无法使用任何命令行工具。</P><P>如果有人想要简单的JSON JavaScript代码,他们可以做到:</P>[cc]JSON.stringfy(JSON.parse(str), null, 4)

    http://www.geospaces.org/geoweb/wiki.jsp?page=json%20实用程序%20演示

    这里的javascript代码不仅美化了JSON,而且还按其属性或属性和级别对其进行了排序。

    如果输入是

    1
    {"c": 1,"a": {"b1": 2,"a1":1 },"b": 1},

    它可以打印(将所有对象组合在一起):

    1
    2
    3
    4
    5
    6
    7
    8
    {
        "b": 1,
        "c": 1,
        "a": {
             "a1": 1,
             "b1": 2
         }
    }

    或(按键排序):

    1
    2
    3
    4
    5
    6
    7
    8
    {
    "a": {
         "a1": 1,
         "b1": 2
     },
    "b": 1,
    "c": 1
    }

    如果您可以选择使用在线工具,那么也可以使用在线工具。

    我发现http://jsonprettyprint.net是最简单和最简单的。