zoukankan      html  css  js  c++  java
  • IT民工——发一个万能的JSON解析器吧!

    前言
    之前一直在用Newtonsoft的json解析,但是实在烂的可以!!!

    首先,对于unicode无法解析,竟然跟我删除了\u,返回一堆码(\u6211-> 6211),我都火了!
    还有,如果对方json一变,我这边写的class没有同步,就会报错!

    最后我只能靠自己,写一个json通用模型去解析了。

    概念介绍
    还是先简单说说Json的一些例子吧。注意,以下概念是我自己定义的,可以参考.net里面的TYPE的模型设计
    如果有争议,欢迎提出来探讨!
    1.最简单:
    {"total":0}
    total就是值,值是数值,等于0
    2. 复杂点
    {"total":0,"data":{"377149574" : 1}}
    total是值,data是对象,这个对象包含了"377149574"这个值,等于1
    3. 最复杂
    {"total":0,"data":{"377149574":[{"cid":"377149574"}]}}
    total是值,data是对象,377149574是数组,这个数组包含了一些列的对象,例如{"cid":"377149574"}这个对象。

    有了以上的概念,就可以设计出通用的json模型了。

    源代码
    Code

    Code
    使用方法
            public CommonJsonModel DeSerialize(string json)
            {
                
    return new
     CommonJsonModel(json);
            }

    超级简单,只要new一个通用对象,把json字符串放进去就行了。

    针对上文的3个例子,我给出3种使用方法:
    {"total":0}
    CommonJsonModel model = DeSerialize(json);

    model.GetValue(
    "total"// return 0

    {"total":0,"data":{"377149574" : 1}}
    CommonJsonModel model = DeSerialize(json);

    model.GetModel(
    "data").GetValue("377149574"//return 1

    {"total":0,"data":{"377149574":[{"cid":"377149574"}]}}
    CommonJsonModel model = DeSerialize(json);
    model.GetModel("data").GetCollection(
    "377149574").GetCollection()[0].GetValue("cid"//return 377149574

    这个有点点复杂,
    1. 首先在data对象里面,377149574代表了一个集合,所以要用model.GetModel("data").GetCollection("377149574")把这个集合取出来。
    2. 其次这个集合里面包含了很多对象,因此用GetColllection()把这些对象取出来
    3. 在这些对象List里面取第一个[0],表示取了":{"cid":"377149574"}这个对象,然后再用GetValue("cid")把对象的值取出来。

    后记
    可能我的思路复杂了点,希望给点建议!谢谢!

    IT民工上

    2009/8/17


  • 相关阅读:
    Mybatis plus强大的条件构造器QueryWrapper条件构造器基础方法解释
    代码一键生成
    报错:error setting certificate verify locations: CAfile: D:/Git/anz/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none
    safari怎么设置开发者模式,调出审查元素
    react antd Tabs组件如何修改默认样式-友好的解决方法
    css filter属性滤镜变灰
    yarn的安装和常用命令
    react-app-rewired start 启动失败报错解决方法
    react路由5到底要怎么使用(基础向)
    react中img引入本地图片的2种方式
  • 原文地址:https://www.cnblogs.com/zc22/p/1547795.html
Copyright © 2011-2022 走看看