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

来源:互联网 发布:网络大电影市场 编辑:程序博客网 时间:2024/04/27 14:54

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 类实现数据的转换


    public 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 (英文)

原创粉丝点击