回答

收藏

如何在 shell 脚本中漂亮地打印 JSON?

技术问答 技术问答 199 人阅读 | 0 人回复 | 2023-09-11

是否有(Unix)shell 脚本以人类可读的形式格式化 JSON?
  X& @( K5 x. c% m基本上,我希望它能转换以下内容:
1 U# x" O" D' ~7 t; Z0 \
    { "foo": "lorem","bar": "ipsum" }' X; R( O8 k0 C- k6 B# D; t
…变成这样的东西:* w0 Z; ^5 a7 M% A( M$ z
    {    "foo": "lorem",   "bar": "ipsum"}7 `* Q  U$ _5 n5 _" u
               
: E9 [0 _1 }4 h; |# Z- l    解决方案:                                                               
5 R) V/ w. D: r. t5 O                                                                使用 Python 2.6 ,你可以:3 w9 M8 E7 }6 k
    echo '{"foo": "lorem","bar": "ipsum"}' | python -m json.tool
    ! a* B7 Q8 n8 E  m9 ]" N
或者,如果 JSON 您可以在文件中执行以下操作:
& c7 m3 D+ D- I6 r7 `
    python -m json.tool my_json.json9 S/ f, @5 g" @$ U! R$ V
如果 JSON 来自 Internet 源(如 API),您可以使用
8 h3 x1 ]. ]) `* k
    curl http://my_url/ | python -m json.tool
    3 ?, F4 T+ q4 N
在所有这些情况下,为了方便起见,你可以创建一个别名:! ~( t6 x, x- ^, l; h
    alias prettyjson='python -m json.tool'
    0 Q3 ~! C( N% Y# h9 Q
为方便起见,请输入更多内容准备:
* K; E9 o. X& o. X0 S% m! B
    prettyjson_s()      echo "$1" | python -m json.tool}prettyjson_f()      python -m json.tool "$1"}prettyjson_w()      curl "$1" | python -m json.tool}. q7 N9 {) \0 }( S
对于上述所有情况。你可以把它放进去。.bashrc,每次都可以在 shell 中使用prettyjson_s '{"foo": "lorem","bar": "ipsum"}'., s4 W) |! Q- ?
请注意,就像@pnd 在下面的评论中指出, Python 3.5  中,JSON 对象默认不再排序。要排序,请将其排序--sort-keys将标志添加到末尾... | python -m json.tool --sort-keys。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则