【数据存储】——JSON的解析和生成

         JSON(JavaScript object Notation),轻量级的数据交换格式。

 

        也就是说我们可以在前台使用JSJson数据传到后台,处理后再返回前台。它可以完成不同格式的数据进行交换。就像我们经常写的AJAX传递数据一样。我们在Controller中返回JsonResult类型的值,然后用JSON接收json类型的数据。


   下面我们从JSON的语法,结构以及生成和解析三方面来进行讲解。


 

       【语法】


 

        JSONJavaScript具有相同的语法,它是ECMAScript的一个子集。

         语法规则:

         1、数据以键值对的格式存储;

         2、数据由逗号分隔;

         3JSON值可以为 NumberStringBooleanObjectArrayNull


 

  【结构】


 

       JSON包含两种结构:一种是Object,一种是Array

       Object{"name":"Cindy","age":25}

       Array[{"name":"cindy","age":23},{"name":"bill","age":23}]

        

   JSON有一个特点就是:数据中可以包含对象,对象中也可以包含数组,也就是所谓的嵌套格式。


 

 JSON的解析和生成】


 

         此实例是用Visual Studio 2012中的C#语言来编写的。在.Net中有两种工具来帮助我们对JSON进行解析和生成,它们分别是:Json.Net,Script.Serialization。

         下面我们就以上两种工具,分别讲解一下JSON的解析和生成。

 

    一、Script.Serialization


          首先,我们要添加引用 system.web.Extensions。然后在.cs文件中添加Using system.web.script.serialization以及using system.IOJSON进行写入和读取。

          先定义一个Person实体类:

              

 class Person
    {
        public string name { get; set; }
        public int age { get; set; }
        public override string ToString()
        {
            returnstring.Format("Name:{0}\nAge:{1}", name, age);
 
        }
 
    }
 

           1、生成JSON


 

class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person() {name="Cindy",age=23};
            JavaScriptSerializer ser = newJavaScriptSerializer();
            string outputJSON =ser.Serialize(p1);
           File.WriteAllText("Output.json",outputJSON );
            Console.Write(p1);
        }
    }
 
 


            2、解析JSON


 class Program
    {
        static void Main(string[] args)
        {
             JavaScriptSerializer ser = newJavaScriptSerializer();
             string JSONString =File.ReadAllText("Output.json");
            Person p2 =ser.Deserialize<Person>(JSONString);
            Console.Write(p2);
        }
    }
 
 


    二、Json.NET

    

    我们要添加Nuget中的Json.net包,然后,添加Using Newtonsoft.Json

   

      1、生成JSON(也就是将对象转化成Json字符串),称为JSON序列化

       

class Program
    {
        static void Main(string[] args)
        {
 
            Person p2 =new Person() { name="cindy",age=23};
            string outputJson =JsonConvert.SerializeObject(p2);
           File.WriteAllText("Output.json",outputJson);
            Console.WriteLine(p2);
        }
}
 

     2、解析JSON(也就是将JSON字符串转换成对象)也称JSON反序列化


 

class Program
    {
        static void Main(string[] args)
        {
           stringJSONString = File.ReadAllText("Output.json");
          Person p1 =JsonConvert.DeserializeObject<Person>(JSONString);
            Console.WriteLine(p1);
        }
}
 

 

   总结】


    从代码上来看,使用JSON.NET要比使用JavaScriptSerialize简单一些,它不用实例化什么类,直接用JsonConvert就可以完成对JSON的序列化和反序列化工作。 JSON.NET 的性能好,通用性好,并且有齐全的API。目前用JSON.net工具来对JSON进行序列化和反序列化。

    PS:在做课表的时候,写传值代码需要将后台传过来的值转为JSON格式的数据,传给前台。于是就学了一点关于JSON的内容,看MVA讲的JSON视频,做了些简单的例子,算是对JSON的一个初步了解吧。在视频的讲解过程中,谈到了JSON和XML的区别,为什么我们不用XML而用JSON。

    我做了两个关于JSON和XML储存数据的例子,下篇博客将对比一下JSON和XML的区别。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸运的梦之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值