写三个CSharp调用不同的接口将对象序列化成Json及Json反序列化成对象的代码和案列,运行环境为.net formake 4.5
时间: 2024-05-23 16:14:38 浏览: 12
1. 使用Newtonsoft.Json库进行序列化和反序列化
代码:
//序列化
string json = JsonConvert.SerializeObject(obj);
//反序列化
T obj = JsonConvert.DeserializeObject<T>(json);
案例:
//定义一个Person类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
//序列化一个Person对象
Person person = new Person() { Name = "Tom", Age = 25 };
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);
//反序列化一个Person对象
string jsonStr = "{\"Name\":\"Tom\",\"Age\":25}";
Person person = JsonConvert.DeserializeObject<Person>(jsonStr);
Console.WriteLine(person.Name + " " + person.Age);
输出结果:
{"Name":"Tom","Age":25}
Tom 25
2. 使用System.Web.Script.Serialization库进行序列化和反序列化
代码:
//序列化
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(obj);
//反序列化
JavaScriptSerializer serializer = new JavaScriptSerializer();
T obj = serializer.Deserialize<T>(json);
案例:
//定义一个Person类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
//序列化一个Person对象
Person person = new Person() { Name = "Tom", Age = 25 };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(person);
Console.WriteLine(json);
//反序列化一个Person对象
string jsonStr = "{\"Name\":\"Tom\",\"Age\":25}";
JavaScriptSerializer serializer = new JavaScriptSerializer();
Person person = serializer.Deserialize<Person>(jsonStr);
Console.WriteLine(person.Name + " " + person.Age);
输出结果:
{"Name":"Tom","Age":25}
Tom 25
3. 使用DataContractJsonSerializer库进行序列化和反序列化
代码:
//序列化
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
byte[] jsonBytes = ms.ToArray();
string json = Encoding.UTF8.GetString(jsonBytes, 0, jsonBytes.Length);
}
//反序列化
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
T obj = (T)serializer.ReadObject(ms);
}
案例:
//定义一个Person类
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
//序列化一个Person对象
Person person = new Person() { Name = "Tom", Age = 25 };
DataContractJsonSerializer serializer = new DataContractJsonSerializer(person.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, person);
byte[] jsonBytes = ms.ToArray();
string json = Encoding.UTF8.GetString(jsonBytes, 0, jsonBytes.Length);
Console.WriteLine(json);
}
//反序列化一个Person对象
string jsonStr = "{\"Name\":\"Tom\",\"Age\":25}";
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
{
Person person = (Person)serializer.ReadObject(ms);
Console.WriteLine(person.Name + " " + person.Age);
}
输出结果:
{"Age":25,"Name":"Tom"}
Tom 25