我们如何隐藏使用JSON.NET库进行序列化的C#属性 . 假设我们有 class 客户
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序列化过程中忽略属性或者我们可以在属性上添加任何属性 .
EDIT :另外,如果我们在数组中创建两个Customer类实例 . 如果我们没有指定第二个实例上的锁定属性,我们可以将属性隐藏为第二个对象 .
JSON
{“Customer”:[{“CustId”:101,“FirstName”:“John”,“LastName”:“Murphy”,“isLocked”:false},{“CustId”:102,“FirstName”:“Sara “,”LastName“:”connie“}]}
谢谢
3 回答
使用JSON.Net属性:
有关更多信息:http://james.newtonking.com/json/help/index.html?topic=html/SerializationAttributes.htm
是的,使用
JsonIgnore
标记您的属性可能是最好的 .但是,如果您确实想在运行时选择,请在您的 class 中添加
public bool ShouldSerialize{MemberName}
. 当JSON.net Serialises时,它将调用它,如果为false,则不会序列化 . 默认情况下,isLocked
为false,例如,您可能希望在其为true时将其序列化 .使用JsonIgnore属性标记该属性 .