首页 > 解决方案 > 将对象转换为 json 字符串时忽略属性

问题描述

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

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

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

获取响应:

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

发布错误:

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

POST 应该是:

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

网络服务器使用 OData

使用该属性JsonIgnore并不能修复它,因为 REST 响应的值当时没有序列化。

这是针对 WPF 而不是 ASP.Net

标签: jsonwpfserializationpropertiesodata

解决方案


JSON.NET 支持使用返回 a 的方法进行条件属性序列化bool,该方法与带有 ShouldSerialize 前缀的属性同名:

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

    public bool ShouldSerializeId() => false;

}

推荐阅读