[英]Hiding C# properties when serialize with JSON.NET
我们如何隐藏使用JSON.NET库进行序列化的C#属性。 假设我们有班级客户
public class Customer
{
public int CustId {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public bool isLocked {get; set;}
public Customer() {}
}
public class Test
{
Customer cust = new Customer();
cust.CustId = 101;
cust.FirstName = "John"
cust.LastName = "Murphy"
string Json = JsonConvert.SerializeObject(cust);
}
JSON
{
"CustId": 101,
"FirstName": "John",
"LastName": "Murphy",
"isLocked": false
}
此对象转换为json,但我没有指定isLocked属性。 由于库将序列化整个类,有没有办法在json序列化过程中忽略属性或者我们可以在属性上添加任何属性。
编辑 :另外,如果我们在数组中创建两个Customer类实例。 如果我们没有指定第二个实例上的锁定属性,我们可以将属性隐藏为第二个对象。
JSON
{
"Customer": [
{
"CustId": 101,
"FirstName": "John",
"LastName": "Murphy",
"isLocked": false
},
{
"CustId": 102,
"FirstName": "Sara",
"LastName": "connie"
}
]
}
使用JSON.Net属性:
public class Customer
{
public int CustId {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
[JsonIgnore]
public bool isLocked {get; set;}
public Customer() {}
}
有关更多信息: https : //www.newtonsoft.com/json/help/html/SerializationAttributes.htm
是的,用JsonIgnore
标记你的属性可能是最好的。
但是,如果您确实想在运行时选择,请在您的类中添加一个public bool ShouldSerialize{MemberName}
。 当JSON.net Serialises时,它将调用它,如果为false,则不会序列化。 默认情况下, isLocked
为false,例如,或许您确实想要将其序列isLocked
true。
使用JsonIgnore
属性标记该属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.