JsonProperty 是一个用于在 C# 中将属性或字段映射到 JSON 属性的属性。在 JSON 序列化和反序列化期间,属性和字段将映射到 JSON 对象的属性和字段。本攻略将提供JsonProperty的使用方法详解。
1. 引用 Newtonsoft.Json 库
JsonProperty 属性在 Newtonsoft.Json 库中,因此首先要确保你的项目中引用了 Newtonsoft.Json 库。
using Newtonsoft.Json;
2. 为属性或字段添加 JsonProperty 属性
JsonProperty 属性有三个重要的参数:PropertyName,DefaultValue 和 Required。其中 PropertyName 用于指定在 JSON 对象中使用的属性名,DefaultValue 用于为 JSON 反序列化时未提供任何值的属性设置默认值,Required则指定属性是否在序列化和反序列化时必须存在。
public class Person
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("age")]
public int Age { get; set; }
[JsonProperty("gender")]
public string Gender { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("isActive")]
public bool IsActive { get; set; }
[JsonProperty("phone")]
[DefaultValue("")]
public string Phone { get; set; }
[JsonProperty("address")]
[Required]
public string Address { get; set; }
}
在上面的示例中,为 Person 类的每个属性添加JsonProperty属性,并指定属性名,以及 DefaultValue 和 Required 参数。
3. 序列化Json
可以使用JsonConvert.SerializeObject方法将类序列化为JSON字符串,如下所示:
static void Main(string[] args)
{
Person person = new Person()
{
Name = "张三",
Age = 25,
Gender = "男",
Email = "zhangsan@gmail.com",
IsActive = true,
Phone = "123456789",
Address = "北京市朝阳区"
};
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);
}
输出结果:
{
"name": "张三",
"age": 25,
"gender": "男",
"email": "zhangsan@gmail.com",
"isActive": true,
"phone": "123456789",
"address": "北京市朝阳区"
}
在上面的示例中,使用 JsonConvert.SerializeObject 方法将 Person 类序列化为 JSON 字符串。
4. 反序列化Json
可以使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为对象,如下所示:
static void Main(string[] args)
{
string json = "{\"name\":\"张三\",\"age\":25,\"gender\":\"男\",\"email\":\"zhangsan@gmail.com\",\"isActive\":true,\"phone\":\"123456789\",\"address\":\"北京市朝阳区\"}";
Person person = JsonConvert.DeserializeObject<Person>(json);
Console.WriteLine($"Name: {person.Name}\nAge: {person.Age}\nGender: {person.Gender}\nEmail: {person.Email}\nIsActive: {person.IsActive}\nPhone: {person.Phone}\nAddress: {person.Address}");
}
输出结果:
Name: 张三
Age: 25
Gender: 男
Email: zhangsan@gmail.com
IsActive: True
Phone: 123456789
Address: 北京市朝阳区
在上面的示例中,使用 JsonConvert.DeserializeObject 方法将 JSON 字符串反序列化为 Person 类对象。
总结
JsonProperty属性是一个很有用的特性,用于在C#对象中指定属性在JSON序列化和反序列化中的属性名,并可以给属性设置默认值和指定是否必须存在属性。本文提供了JsonProperty 的使用方法,包括在属性或字段上添加JsonProperty属性、序列化JSON和反序列化JSON。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JsonProperty 的使用方法详解 - Python技术站