繁体   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