背景
最近项目中包含前后端数据交互,后台采用C#语言,自然少不了与前端的数据交互,经商议采用Json数据格式进行交互。
简单实现
1.新建C#控制台项目Test
2.解决方案管理器中右键单击引用->添加引用
在程序集中找到System.Web.Extensions程序集勾选,确定。
3.在项目中引用Json序列化命名空间
4.新建一个简单公有类Person,使其拥有三个字段 姓名name(String),年龄age(Int32),分数score(Int32 []),并为其添加公有属性,再覆盖实现其字符串化方法ToString,源码如下
public class Person
{
private string name;
public String Name
{
set { this.name = value; }
get { return this.name; }
}
private int age;
public int Age
{
set { this.age = value; }
get { return this.age; }
}
private int[] score;
public int[] Score
{
set { this.score = value; }
get { return this.score; }
}
public override string ToString()
{
return $"名称是{name},年龄是{age},分数列表{String.Join(",",this.score)}";
}
}
5.使用JavaScriptSerializer类提供的API来实现我们的业务需求,代码如下
public static void Main()
{
//提供一个对象
Person person = new Person();
person.Name = "小明";
person.Age = 12;
person.Score = new int[] { 100, 98, 99 };
Console.WriteLine("person 初始内容 : " + person.ToString());
Console.WriteLine();
//创建JavaScriptSerializer对象
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
//测试对象->Json格式化操作
String json = javaScriptSerializer.Serialize(person);
Console.WriteLine("person对象 的 json 格式 : " + json);
Console.WriteLine();
//测试Json数据->对象化操作
Person personFromJson = javaScriptSerializer.Deserialize<Person>(json);
Console.WriteLine("json数据对象化结果 : " + personFromJson.ToString());
Console.WriteLine();
//避免程序调试完毕后一闪而过
Console.ReadKey();
}
运行结果
6.代码解析
JavaScriptSerializer类提供对象方法String Serialize(object obj)可以对一个对象Json格式化,返回一个Json格式的字符串。
JavaScriptSerializer类提供对象泛型方法T Deserialize(T t)可以对一个Json格式字符串反序列化为一个T类型的对象。