如何在命令行中打印格式化的json和xml数据

  • Post author:
  • Post category:其他


如果你跟我一样是个重度命令行依赖用户,那么当你在Terminal中用curl调试一些Rest API的时候,肯定会因为一堆看上去杂乱无章的输出而头大不已,比如像下面这样…


json_without_format

当然,你可以再把这一堆输出copy到某个formatter里面,如果你真的要这么做,那我推荐一个还不错的

在线formatter网站

。但如果你不想这么麻烦,想直接在Terminal里面就看到格式化的数据,那也可以,方式就是通过python(2.6版本之后)的一个module,使用方式如下

1

curl http:


//apihost/v0/public/data


-d


type


=2 | python -m json.tool

如果API返回的是一串合法的json,那么这个时候你在命令行里看到就是这样的


json_with_format

这个方法唯一的问题就是在Terminal里没法显示unicode中文,但如果你只是想看看返回数据的结构,那就没问题。或者如果你有什么完美的解决方案,也请你不吝分享。

虽然现在JSON以其轻量级,易解析等诸多优点大行其道,但也有一些系统的API返回的数据是XML格式的,python没有现成的module像格式化json一样格式化xml。当然,你可以用lxml自己写一个,这也很简单。(如果你真的写了,那也请你不吝分享出来…LOL)。虽然没有现成的python module,但是有现成的工具,那就是

xmllint

。关于xmllint的介绍自己看doc就是了,他是libxml2的一部分,所以在大多数的*nix系统上都是默认自带的。用起来也很简单

1

curl http::


//api-which-returns-xml-string


| xmllint --


format


-

格式化之后的xml数据如下所示


xml_with_format




Have fun!