如何隐藏用JSON序列化的c#属性?网络图书馆。假设,我们有一个类Customer
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。净属性:
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序列化时,它将调用它,如果为false,则不序列化。isLocked
默认为false,也许你想序列化它,当它为真,例如
用JsonIgnore
属性标记该属性