簡體   English   中英

如何從列表/數組中刪除 object 屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM