【数据存储】——JSON的解析和生成,数据存储json解析
【数据存储】——JSON的解析和生成,数据存储json解析
JSON(JavaScript object Notation),轻量级的数据交换格式。
也就是说我们可以在前台使用JS将Json数据传到后台,处理后再返回前台。它可以完成不同格式的数据进行交换。就像我们经常写的AJAX传递数据一样。我们在Controller中返回JsonResult类型的值,然后用JSON接收json类型的数据。
下面我们从JSON的语法,结构以及生成和解析三方面来进行讲解。
【语法】
JSON和JavaScript具有相同的语法,它是ECMAScript的一个子集。
语法规则:
1、数据以键值对的格式存储;
2、数据由逗号分隔;
3、JSON值可以为 Number,String,Boolean,Object,Array,Null
【结构】
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.IO对JSON进行写入和读取。
先定义一个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的区别。
相关文章
- 暂无相关文章
用户点评