Json学习总结

    目前在项目中遇到对Json的处理,这里将自己的学习总结一下。首先要了解一个东西,要从它的定义与由来来了解。

    JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。

    1.Json的结构

    Json一共有两种结构,对象与数组。

    对象是一个无序的''名称/值''集合。是以'{'开始以'}'结束,中间有0个或多个','进行分割。

    例子:表示人的一个对象:
      {"姓名" : "张三","年龄" : 24}

    数组格式是以'['开始']'结束,中间有0个或多个','进行分割。

    例子:表示一群人:

 [{"姓名" : "张三" , "年龄" : 23},{"姓名" : "李四" , "年龄" : 24}]

    2.Json的使用

    这里对Json的使用以引用using Newtonsoft.Json为主,主要讲述这个类的使用。

    类的方法主要介绍JsonReader/JsonWriter/JsonConvert

    JsonReader

           string jsonText = @"{""input"" : ""value"", ""output"" : ""result""}";
             JsonReader reader = new JsonTextReader(new StringReader(jsonText));
 
             while (reader.Read())
             {
                 Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value+"\r\n");
             }
             Console.ReadKey();

    JsonWriter

              StringWriter sw = new StringWriter();
              JsonWriter writer = new JsonTextWriter(sw);
  
              writer.WriteStartObject();
              writer.WritePropertyName("input");
              writer.WriteValue("value");
              writer.WritePropertyName("output");
              writer.WriteValue("result");
              writer.WriteEndObject();
              writer.Flush();
              string jsonText2 = sw.GetStringBuilder().ToString();
              Console.WriteLine(jsonText2);
              Console.ReadKey();

   

    3.Json的序列化与反序列化

     序列化主要采用JsonConvert.SerializeObject,例如:

    
            List<Student> lstStuModel = new List<Student>() 
            {
            new Student(){ID=1,Name="张飞",Age=250,Sex=""},
            new Student(){ID=2,Name="潘金莲",Age=300,Sex=""}
            };

            //Json.NET序列化
                        string jsonData = JsonConvert.SerializeObject(lstStuModel);

            Console.WriteLine(jsonData);
            Console.ReadKey();
    反序列化主要采用 JsonConvert.DeserializeObject方法实现,例如:
    
           //Json.NET反序列化
                            string json = @"{ 'Name':'C#','Age':'3000','ID':'1','Sex':'女'}";
            Student descJsonStu = JsonConvert.DeserializeObject<Student>(json);//反序列化
                            Console.WriteLine(string.Format("反序列化: ID={0},Name={1},Sex={2},Sex={3}", descJsonStu.ID,                descJsonStu.Name, descJsonStu.Age, descJsonStu.Sex));
            Console.ReadKey(); 

   
     JsonConvert反序列化的内容,的接收可以为数组JArray,JObject,JNode(XML),对象等

     JObject

    嵌套格式的应用

             string jsonText3 = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";
             JObject jo1 = (JObject)JsonConvert.DeserializeObject(jsonText3);
             string zone = jo1["beijing"]["zone"].ToString();
            string zone_en = jo1["beijing"]["zone_en"].ToString();

   

    JArray

  数组性数据的应用

             string jsonArrayText1 = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]";
             JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);
             string ja1a = ja[1]["a"].ToString();
             //或者
             JObject o = (JObject)ja[1];
             string oa = o["a"].ToString();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值