zoukankan      html  css  js  c++  java
  • .NET平台开源JSON库LitJSON的使用方法

    一个简单示例:

    String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemid’:1002,’itemname’:’hello2’}]}";            
    //*** 读取JSON字符串中的数据 *******************************          
    JsonData jd = JsonMapper.ToObject(str);        
    String name = (String)jd["name"];
    long id = (long)jd["id"];          
    JsonData jdItems = jd["items"];    
    int itemCnt = jdItems.Count;
    // 数组 items 中项的数量
    foreach (JsonData item in jdItems)
    // 遍历数组 items          
    {int itemID = (int)item["itemid"];              
    String itemName = (String)item["itemname"];      
    }            
    //*** 将JsonData转换为JSON字符串 ***************************        
    String str2 = jd.ToJson();

    下载地址 :下载
    LitJSON是一个.NET平台下处理JSON格式数据的类库,小巧、快速。它的源代码使用C#编写,可以通过任何.Net平台上的语言进行调用,目前最新版本为LitJSON 0.5.0。
    与以下这几个.Net平台上的开源JSON库相比,LitJSON的性能遥遥领先:
    Jayrock version 0.9.8316
    LitJSON version 0.3.0
    Newtonsoft Json.NET version 1.1
    下面介绍LitJSON中常用的方法:
    以下示例需要先添加引用LitJson.dll,再导入命名空间 using LitJson;
    点击直接下载LitJSON.dll,也可以到http://litjson.sourceforge.net去下载。
    1、Json 与 C#中 实体对象 的相互转换
    例 1.1:使用 JsonMapper 类实现数据的转换
    ublic class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public DateTime Birthday { get; set; }
        }
        public class JsonSample
        {
            public static void Main()
            {
                PersonToJson();
                JsonToPerson();
            }
            ///
            /// 将实体类转换成Json格式
            ///
            public static void PersonToJson()
            {
                Person bill = new Person();
                bill.Name = "www.87cool.com";
                bill.Age = 3;
                bill.Birthday = new DateTime(2007, 7, 17);
                string json_bill = JsonMapper.ToJson(bill);
                Console.WriteLine(json_bill);
                //输出:{"Name":"www.87cool.com","Age":3,"Birthday":"07/17/2007 00:00:00"}
            }
            ///
            /// 将Json数据转换成实体类
            ///
            public static void JsonToPerson()
            {
                string json = @"
                {
                    ""Name""    : ""www.87cool.com"",
                    ""Age""      : 3,
                    ""Birthday"" : ""07/17/2007 00:00:00""
                }";
                Person thomas = JsonMapper.ToObject(json);
                Console.WriteLine("’87cool’ age: {0}", thomas.Age);
                //输出:’87cool’ age: 3
            }
        }
    例 1.2:使用 JsonMapper 类将Json字符串转换为C#认识的JsonData,再通过Json数据的属性名或索引获取其值。
    在C#中读取JsonData对象 和 在JavaScript中读取Json对像的方法完全一样;
    对Json的这种读取方式在C#中用起来非常爽,同时也很实用,因为现在很多网络应用提供的API所返回的数据都是Json格式的,
    如Flickr相册API返回的就是json格式的数据。
            public static void LoadAlbumData(string json_text)
            {
                JsonData data = JsonMapper.ToObject(json_text);
                Console.WriteLine("Album’s name: {0}", data["album"]["name"]);
                string artist = (string)data["album"]["name"];
                int year = (int)data["album"]["year"];
                Console.WriteLine("First track: {0}", data["album"]["tracks"][0]);
            }
    2、C# 中对 Json 的 Readers 和 Writers
    例 2.1:JsonReader类的使用方法
    public class DataReader
    {
        public static void Main ()
        {
            string sample = @"{
                ""name""  : ""Bill"",
                ""age""  : 32,
                ""awake"" : true,
                ""n""    : 1994.0226,
                ""note""  : [ ""life"", ""is"", ""but"", ""a"", ""dream"" ]
              }";
            ReadJson (sample);
        }
        //输出所有Json数据的类型和值
        public static void ReadJson (string json)
        {
            JsonReader reader = new JsonReader (json);
            Console.WriteLine ("{0,14} {1,10} {2,16}", "Token", "Value", "Type");
            Console.WriteLine (new String (’-’, 42));
            while (reader.Read())
            {
                string type = reader.Value != null ? reader.Value.GetType().ToString() : "";
                Console.WriteLine("{0,14} {1,10} {2,16}", reader.Token, reader.Value, type);
            }
        }
    }
    //输出结果:
    //      Json类型        值          C#类型
    //------------------------------------------
    //  ObjectStart                          
    //  PropertyName      name    System.String
    //        String      Bill    System.String
    //  PropertyName        age    System.String
    //          Int        32    System.Int32
    //  PropertyName      awake    System.String
    //      Boolean      True  System.Boolean
    //  PropertyName          n    System.String
    //        Double  1994.0226    System.Double
    //  PropertyName      note    System.String
    //    ArrayStart                          
    //        String      life    System.String
    //        String        is    System.String
    //        String        but    System.String
    //        String          a    System.String
    //        String      dream    System.String
    //      ArrayEnd                          
    //    ObjectEnd
    例 2.2:JsonWriter类的使用方法
    public class DataReader
    {
        //通过JsonWriter类创建一个Json对象
        public static void WriteJson ()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            JsonWriter writer = new JsonWriter (sb);
            writer.WriteArrayStart ();
            writer.Write (1);
            writer.Write (2);
            writer.Write (3);
            writer.WriteObjectStart ();
            writer.WritePropertyName ("color");
            writer.Write ("blue");
            writer.WriteObjectEnd ();
            writer.WriteArrayEnd ();
            Console.WriteLine (sb.ToString ());
            //输出:[1,2,3,{"color":"blue"}]
        }
    }
    更详细的可参考 http://litjson.sourceforge.net/doc/manual.html (英文)

    http://www.jiaonan.tv/html/blog/1/27727.htm

  • 相关阅读:
    Computer Networking: Computer networks and the Internet
    编译pqxx源码configure时遇到codecs.py LookupError的解决方法
    DBMS-存储和文件结构
    DBMS-关系数据库的设计:范式、函数依赖、分解算法、多值依赖
    WebPack填坑笔记
    VsCode常用快捷键
    用户 在地址栏输入网址 经历了那些
    正向代理和反向代理
    检测浏览器(BOM)以及地址栏网址的API
    js变量按照存储方式区分,有哪些类型,并表述其特点
  • 原文地址:https://www.cnblogs.com/chen110xi/p/2515592.html
Copyright © 2011-2022 走看看