[英]How to remove an object property from an list/array?
如何從 object 的列表/數組中刪除屬性?
我的 model 包含:
public string FirstName { get; set; }
public string LastName { get; set; }
public string Age { get; set; }
public string Size { get; set; }
我正在將其轉換為 JSON
string json = JsonConvert.SerializeObject(client);
一切正常...我在 JSON 中獲得了 object 的所有屬性。
但是我需要創建兩個級別的訪問權限,並在一個級別中顯示所有信息,而在另一個級別中顯示更少的屬性......
我的問題是:我可以刪除 object 的屬性嗎?
像這樣:
List<Customer> customers = new List<Customer>();
//(and this have 100 clients inner)
customer.removeProperty(Age, Size); // Can I have someting like this?
嘗試使用屬性上方的 json 忽略標簽。 例如:
[JsonIgnore]
public string Age { get; set; }
如果您希望能夠在有和沒有某些屬性的情況下進行序列化,而不改變實際類的結構,您可以嘗試使用此處的示例。
使用較少的屬性創建一個新的 model。 制作兩個列表,一個包含所有屬性,另一個包含要刪除的屬性。
例如
public YourModelNow
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Age { get; set; }
public string Size { get; set; }
}
public YourModelNowFiltered
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
這是假設您需要兩個具有不同屬性的file.json
。 如果您只需要忽略這些屬性,請使用 Ross Gurburts 方法。
我建議使用AutoMapper
您將需要創建一個 DTO [數據傳輸對象] class 它將具有您想要公開的屬性
用法很簡單:
在配置中:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<YourModel, YourModelDTO>();
});
在實際使用中:
IMapper iMapper = config.CreateMapper();
var source = new YourModel();
var destination = iMapper.Map<YourModel, YourModelDTO>(source);
有關AutoMapper可以做什么的更多信息和示例,請閱讀此處
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.