使用JSON.NET序列化时隐藏c#属性

本文关键字:隐藏 属性 序列化 JSON NET 使用 | 更新日期: 2023-09-27 18:09:15

如何隐藏用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.NET序列化时隐藏c#属性

使用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属性标记该属性