将对象转换为json字符串时忽略属性

时间:2019-10-01 15:07:46

标签: json wpf serialization properties odata

所以我有一个REST API,可与基于OData交换的JSON一起使用。在OData类型中,我想读取一个ID属性,以便可以对其进行一些检查。但是,当我想写回Web服务器时,响应JSON字符串中不得存在ID属性。因此,它必须是只写属性,但是只需将属性更改为只写,就可以避免检查该属性的值。

例如,我创建了一个新产品:

Public Class Product
  Public property ID as integer
  Public property Title as string
End class

获取回复:

{
  "ID" = 1,
  "Title" = "Cool product!"
}

POST错误:

{
  "ID" = 1, <---- ignore this value
  "Title" = "Cool product! Changed!"
}

POST应该是:

{
  "Title" = "Cool product! Changed!"
}

Web服务器使用OData

使用属性JsonIgnore不能解决该问题,因为那时REST响应的值没有被序列化。

这是用于WPF而不是ASP.Net

1 个答案:

答案 0 :(得分:1)

JSON.NET使用返回bool并与具有ShouldSerialize前缀的属性同名的方法支持conditional property serialization

public class Product
{
    public int Id { get; set; }
    public string Title { get; set; }

    public bool ShouldSerializeId() => false;

}