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

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

当然,你可以再把这一堆输出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和xml数据_第1张图片

这个方法唯一的问题就是在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数据如下所示

Have fun!

你可能感兴趣的:(如何在命令行中打印格式化的json和xml数据)