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。

    下面介绍LitJSON中常用的方法: 
    以下示例需要先添加引用LitJson.dll,再导入命名空间 using LitJson; 
    可以到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"}] 
        } 
    }

  • 相关阅读:
    drawable转mitmap 以及图片base64编码
    接口传值实例DatePickerDialog
    android showDialog用法
    andorid ListView和GirdView 与ScrollView 冲突
    public boolean onKeyDown(int keyCode, KeyEvent event)
    android PopupWindow
    android 异步线程刷新UI 以及 JSON解析 以及 url get请求
    2020-08-06:现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来 负责具体的邮件发送任务,如何让系统尽快地完成发送? 请详述技术方案!
    2020-08-05:请解释下为什么鹿晗发布恋情的时候, 微博系统会崩溃,如何解决?
    2020-08-04:简单工厂、工厂方法和抽象工厂的区别是什么?
  • 原文地址:https://www.cnblogs.com/wanshutao/p/3647058.html
Copyright © 2011-2022 走看看