回答

收藏

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

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

是否有(Unix)shell 脚本以人类可读的形式格式化 JSON?
8 d1 w$ x* I1 v! p- V& Y$ b) e基本上,我希望它能转换以下内容:
! k' m* o3 ?. @  S
    { "foo": "lorem","bar": "ipsum" }8 D% b& M0 ^2 e
…变成这样的东西:3 h% M6 ~& c+ i  f9 e, B4 y( K
    {    "foo": "lorem",   "bar": "ipsum"}. c" U- L" Q3 L( ~( |
               
, f0 c1 n: q: a; w) o9 D    解决方案:                                                               
2 G! e4 a6 y. _                                                                使用 Python 2.6 ,你可以:7 f- n0 w: Z. t& J7 T# ^: q) n
    echo '{"foo": "lorem","bar": "ipsum"}' | python -m json.tool7 J7 F1 H: Y$ G2 [
或者,如果 JSON 您可以在文件中执行以下操作:
; B% H! {& f% X: K( C% Q7 n
    python -m json.tool my_json.json
    & x( D" |) S' D, W
如果 JSON 来自 Internet 源(如 API),您可以使用2 j7 J# L" v: w4 J/ M! ~
    curl http://my_url/ | python -m json.tool& S, |% @3 Q1 G  Y7 N8 j6 E2 L! o2 P
在所有这些情况下,为了方便起见,你可以创建一个别名:
" l8 u3 j1 W: Z" E
    alias prettyjson='python -m json.tool'
    5 ]# z. u6 T- v. @3 [+ x
为方便起见,请输入更多内容准备:
8 Z5 N9 n4 F" ]2 V) @- U
    prettyjson_s()      echo "$1" | python -m json.tool}prettyjson_f()      python -m json.tool "$1"}prettyjson_w()      curl "$1" | python -m json.tool}
    / m4 t$ ?  q" [8 |% k4 {' z
对于上述所有情况。你可以把它放进去。.bashrc,每次都可以在 shell 中使用prettyjson_s '{"foo": "lorem","bar": "ipsum"}'.
% F9 D: k( P6 L1 H请注意,就像@pnd 在下面的评论中指出, Python 3.5  中,JSON 对象默认不再排序。要排序,请将其排序--sort-keys将标志添加到末尾... | python -m json.tool --sort-keys。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则