.NET平台开源JSON库LitJSON的使用方法

jopen 10年前

一个简单示例:

 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"}]      }  }