背景
最近项目中包含前后端数据交互,后台采用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类型的对象。
转自:C#与Json实现字符串和对象的互相转换