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

Ignore property when converting object to json string

所以我有一个 REST API,它与基于 OData 交换的 JSON 一起工作。在 OData 类型中有一个 ID 属性 我想阅读,所以我可以对其进行一些检查。但是,当我想写回网络服务器时,ID 属性 不能出现在响应 JSON 字符串中。所以它必须是一个只写的 属性,但是简单地将 属性 更改为只写可以防止检查 属性.

的值是什么

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

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!"
}

网络服务器使用 OData

使用属性 JsonIgnore 无法修复它,因为那时 REST 响应的值未序列化。

这是针对 WPF 而不是 ASP.Net

JSON.NET 支持 conditional property serialization 使用 returns 一个 bool 的方法,并且与带有 ShouldSerialize 前缀的 属性 同名:

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

    public bool ShouldSerializeId() => false;

}