微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

推荐查看Json输出的“最方便”的方法

项目的表现层使用MVC+Extjs。在开发过程中,一旦页面显示不正常,第一个需要排查的总是“Action是否输出了正确的Json?”。由于开发人员会日复一日地频繁进行这个操作,所以我们的目标是,要找到一种方法,可以不用耗费额外的精力随时查看Json输出

“不用耗费额外的精力”指的是:当需要查看Json输出时,只要转转眼球(可能至少还需要点两下鼠标,恐怕)就能很快找到想看的结果。

查看Json输出方法很多,我们所能找的最接近这个目标的方案是“fiddler2+JsonViewer插件+自定义fiddler2过滤条件”。想要查看Json输出时,只要先将fiddler运行起来,然后在浏览器里正常操作Web页面,就可以在fiddler里面看到截获的Json输出了,效果如下图所示。

安装fiddler2+JsonViewer插件

fiddler2是一款老牌Web调试工具。下载、安装之后,通过点击“开始|程序|fiddler2”或点击IE的菜单“工具|fiddler2”将其运行起来后,它会自动把自己注册成IE的代理服务器,从而截获任何经过IE的请求/应答;当关闭它时,它又会自动把代理服务器配置取消(当年使用fiddler1的时候,还得自己添加代理服务器配置,很麻烦的说)。
JsonViewer是一款查看Json对象的小工具。解压后,可以看到3个子目录:
- JsonView:可独立运行版。
- Visualizer:VS2005插件
- fiddler:fiddler2插件
我们接下来要安装JsonViewer的fiddler2插件方法是,将fiddler目录中的所有文件复制到“fiddler2的安装目录Inspectors”。然后修改fiddler2的安装目录fiddler.exe.config”,如下图所示,粗体部分是需要我们添加的配置信息。

fiddler.exe.config
<configuration>
<runtime>
<generatePublisherEvidence enabled=false/>
<assemblyBinding xmlns=urn:schemas-microsoft-com:asm.v1>
<probing privatePath=Inspectors />
</assemblyBinding>
</runtime>
</configuration>


注意 IE7 和 .NET Framework 被硬编码成只要是对localhost的请求,就不通过代理服务器。所以像“http://localhost:8000/Default.aspx”这样的请求不会被fiddler2截获。解决方法是:1) 将“localhost”替换成“localhost.”,如“http://localhost.:8000/Default.aspx”;2) 将“localhost”替换成本机IP地址,如“http://172.16.75.78:8000/Default.aspx”。

现在,让我们把fiddler2运行起来,再操作一下页面,就可以在fiddler2窗体左侧的“Web Sessions”列表里看到一大堆请求/应答。点击返回Json的那一条,再点击进入右侧的“Inspectors”、“Json”Tab页,就可以了。只是,fiddler2认会把所有经过IE的任何请求/应答全都显示出来,这样一来,“Web Sessions”列表里的小编就嫌太多了,能不能把与Json不相干的小编全部过滤掉呢?这个并不难,只要在fiddler2的“Customrules”里面增加几行代码就可以了。

自定义过滤条件

点击fiddler2的菜单“Rules|Customize Rules...”,会自动由记事本打开可添加自定义规则的代码文件
在第81行增加如下代码,目的是在fiddler2的Rules菜单增加一个“只显示Json”的菜单项:

// jcl20091121
public static RulesOption(只显示 &Json)
var m_ShowJsonOnly: boolean = false;

在OnBeforeResponse事件里增加如下代码,意思是如果“Rules|只显示Json”菜单项被选中了,就过滤掉所有Content-Type!=application/json; charset=utf-8的应答。

// jcl:2009-11-21
if(m_ShowJsonOnly) {
//MessageBox.Show(oSession.oResponse.headers.Item(Content-Type).ToString());
if (!oSession.oResponse.headers.ExistsAndContains(Content-Type,application/json; charset=utf-8)) {
oSession[ui-hide] = hide; // String value not important
}
}

文章来自:http://www.cnblogs.com/1-2-3/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐