修改Fiddler实用插件JsonViewer

发表于:2018-11-14 11:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lucnzh    来源:博客园

  在Web开发中,Fiddler是我们常用的工具,JSON是我们常用的数据格式。本文所要说的JsonViewer就是一款在Fiddler中查看JSON对象的小插件(当然它不仅仅是作为Fiddler的插件,还有独立运行版和Visual Studio的插件)。
  但是JsonViewer有一点让人很不爽的地方,它在显示日期格式的时候非常不直观,如下图所示:
  
  我们都知道括号里的整数表示从1970 年1 月1 日开始到Date 对象中的时间之间的毫秒数(负数表示1970 年以前的日期),但这是计算机想要知道的,并不是我们想要知道的。幸好JsonViewer是一款开源的工具,在CodePlex上我们可以下到它的源码,下面就开始我们的改造之旅。
  经过在源码中一翻寻觅,我在JsonObjectTree类中发现下面一段代码,看来只要在这个函数里作一个小小的修改就可以达到我们的目的啦。
  private JsonObject CreateJsonObject(object jsonObject)
  {
  JsonObject obj = new JsonObject();
  if (jsonObject is JavaScriptArray)
  obj.JsonType = JsonType.Array;
  else if (jsonObject is JavaScriptObject)
  obj.JsonType = JsonType.Object;
  else
  {
  obj.JsonType = JsonType.Value;
  obj.Value = jsonObject;
  }
  return obj;
  }

  DateTime序列化后的格式刚才我们都看见了,例如:/Date(1286183951984)/,我们可以通过正则表达式去匹配它,然后把它转成我们想要的格式,代码如下。
  obj.JsonType = JsonType.Value;
  obj.Value = jsonObject;
  //如果是时间格式
  if (jsonObject is string && Regex.IsMatch((string)jsonObject,
  @"^/Date\(-{0,1}\d{1,}\)/$", RegexOptions.IgnoreCase))
  {
  DateTime utcDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
  //从UTC时间1970年1月1日开始到DateTime对象中的时间之间的毫秒数
  string millisecondsFrom19700101 = Regex.Replace((string)jsonObject,
  @"^(/Date\()|(\)/)$", "", RegexOptions.IgnoreCase);
  long milliseconds;
  if (long.TryParse(millisecondsFrom19700101, out milliseconds))
  {
  //Tick单位为纳秒
  utcDate = utcDate.AddTicks(milliseconds * 10000);
  obj.Value = utcDate.ToLocalTime().ToString();
  }
  }

  现在让我们看一下效果,怎么样,是不是清楚了很多?
   

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号