using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JSONSerializeDemo
{
class Program
{
static void Main(string[] args)
{
// 簡單的將 對象 序列化成 字符串
Student s = new Student("張三", "男人", 9);
//Student s = new Student();
//s.name = "張三";
//s.sex = "男人";
//s.age = 29;
string sj = JsonConvert.SerializeObject(s); // "{\"name\":\"張三\",\"sex\":\"男人\",\"age\":9}"
// 將JSON字符串反序列化成对象
// 1.指定反序列化的对象
//object o = JsonConvert.DeserializeObject(sj, typeof(Student));
//Student s2 = o as Student; // "張三", "男人", 9
//2.反序列化使用匿名对象
//var Stutemp = new {
// name = "",
// sex = "",
// age = 0
//};
//var s2 = JsonConvert.DeserializeAnonymousType(sj, Stutemp);
//3.序列化 对象集合
List<Student> list = new List<Student>
{
new Student("張三", "男人", 9),
new Student("李四", "男人", 25),
new Student("小李", "女人", 35)
};
string slist = JsonConvert.SerializeObject(list);//"[{\"name\":\"張三\",\"sex\":\"男人\",\"age\":9},{\"name\":\"李四\",\"sex\":\"男人\",\"age\":25},{\"name\":\"小李\",\"sex\":\"女人\",\"age\":35}]"
//4,指定对象反序列化集合
//List<Student> slist2=JsonConvert.DeserializeObject<List<Student>>(slist);
//5.指定匿名对象反序列化集合
var Stutemp = new
{
name = "",
sex = "",
age = 0
};
var listtemp = Enumerable.Repeat(Stutemp, 3);// 生成匿名集合对象
var listo=JsonConvert.DeserializeAnonymousType(slist, listtemp);
foreach(var s2 in listo)
{
Console.WriteLine(s2.name + " " + s2.sex + " " + s2.age);
}
//Console.WriteLine(s2.name +" "+s2.sex+" "+s2.age);
Console.ReadKey();
}
}
public class Student
{
public Student() { }
public Student(string _name,string _sex,int _age)
{
name = _name;
sex = _sex;
age = _age;
}
public string name;
public string sex;
public int age;
public override string ToString()
{
return name + " " + sex + " " + age;
}
}
}