zoukankan      html  css  js  c++  java
  • json操作工具-LitJson

    LitJSON是json生成与读取的操作工具,使用很方便并且网上还能找到源码。下面是使用LitJSON的例子:

    一、生成json:实例化一个JsonData,然后按照List数组的方式向里面填。

    JsonData data2 = new JsonData();

    data2["name"] = "peiandsky";//一直这样写,是简单的json键值对

    data2["info"] = new JsonData();//这样new出来的是嵌套json对象

    data2["info"]["sex"] = "male";

    data2["info"]["age"] = 28;

    string ss = data2.ToJson();

    //ss的值是:{"name":"peiandsky","info":{"sex":"male","age":28}}


    二、解析json

    String str = "{'name':'cyf','id':10,'items':[{'itemid':1001,'itemname':'hello'},{'itemid':1002,'itemname':'hello2'}]}";

    JsonData data = JsonMapper.ToObject(str);

    //取到name的值
    string name_str = data["name"].ToString();//值为cyf

    //取到第二个itemid
    int itemid_sec = (int)data["items"][1]["itemid"];//值为1002,注意数据类型转换

    //还可以这么取json数组的值
    foreach (JsonData item in data["items"])
    {

    int count = item.Count;

    int itemid_str = (int)item["itemid"];

    string itemname_str = (string)item["itemname"];
    }


    三、生成json:用JsonMapper.ToJson()方法生成json

    //声明一个排序的Dictionary,好处是生成的json已经按照字典排序了
    SortedDictionary<string, object> m_values = new SortedDictionary<string, object>();

    m_values["name"] = "hyp";

    m_values["age"] = 26;

    m_values["male"] = "man";

    string json = JsonMapper.ToJson(m_values);

    //输出的值是:{"age":26,"male":"man","name":"hyp"}

    //如果不用字典的方式,还可以用实体类代替字典,使用方法是一样的。
    //实体类解析例如:Player player2 = JsonMapper.ToObject<Player>(json); Player是实体类

    四、生成json数组

    JsonData jdata = new JsonData();

    jdata["data"] = new JsonData();

    jdata["data"].SetJsonType(JsonType.Array);//设置键data的值是数组

    SortedDictionary<string, object> dic = new SortedDictionary<string, object>();

    dic["proname"] = "北京";

    dic["proid"] = 1;

    string arr = JsonMapper.ToJson(dic);//生成一个新的json数组,作为data的数组元素

    jdata["data"].Add(arr);//添加1个数组元素,到原来的json中

    jdata["data"].Add(arr);//继续添加数组元素。实际用时,这里用for循环添加

    string s = jdata.ToJson();//转换为json数组
    //s输出值是:{"data":["{"proid":1,"proname":"北京"}","{"proid":1,"proname":"北京"}"]}
    //然后替换掉反斜杠和多余的引号就可以了


    五、生成json数组

    JsonWriter writer = new JsonWriter();

    JsonData JD = new JsonData();

    writer.WriteArrayStart();

    JD["username"] = "LiLei";

    JD["phone"] = "13800138000";

    JD["city"] = "北京";

    writer.Write(JD.ToJson());

    JD["username"] = "HanMeiMei";

    JD["phone"] = "13800138001";

    JD["city"] = "北京朝阳";

    writer.Write(JD.ToJson());

    writer.WriteArrayEnd();

    string json = writer.ToString();

    //输出:["{"username":"LiLei","phone":"13800138000","city":"北京"}","{"username":"HanMeiMei","phone":"13800138001","city":"北京朝阳"}"]
    //这种方式输出的json数组不带数组名称,使用时须去掉多余的反斜杠和引号。

    六、判断json中是否含有某个字段,用判断字典里是否含有某个key的方式

    public bool CheckParam(JsonData Json, string KeyName)
    {
    bool res = false;
    //判断是否有key
    if (((IDictionary)Json).Contains(KeyName))
    {
    //string valuestr = (string)Json[KeyName];
    res = true;
    }

    return res;
    }

  • 相关阅读:
    canvas裁剪之后的base64转换为上传文件blob对象
    最简单的数据饼状图
    vue2源码浏览分析02
    vue2源码浏览分析01
    非常适合新手的jq/zepto源码分析07---ajax的封装
    非常适合新手的jq/zepto源码分析08---ajax的封装
    非常适合新手的jq/zepto源码分析06 -- 事件模型
    非常适合新手的jq/zepto源码分析05
    非常适合新手的jq/zepto源码分析03
    非常适合新手的jq/zepto源码分析04
  • 原文地址:https://www.cnblogs.com/huyueping/p/5062786.html
Copyright © 2011-2022 走看看