json - 将对象转换为 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
解决方案
JSON.NET 支持使用返回 a 的方法进行条件属性序列化bool
,该方法与带有 ShouldSerialize 前缀的属性同名:
public class Product
{
public int Id { get; set; }
public string Title { get; set; }
public bool ShouldSerializeId() => false;
}
推荐阅读
- amazon-web-services - AWS - Glue,开发端点两个小节点与一个大节点
- c - GNU 工具链如何决定使用近跳转指令和短跳转指令?
- php - 是否可以在共享主机环境中更改 Horde Webmail 服务的编码文件,这会影响所有客户吗?
- java - I am trying to create a android app which copy a file in another app using symlink and print in central Android logs
- python - 将 cURL 转换为 Python - 上传文件
- c# - 在 string.format 中插入一个整数值
- rest - Apify API 请求正文
- java - 无法在 AWS Lambda 中创建文件 [/temp/.cache/version.txt.lck]
- javascript - 使用 useSelector 强制重新渲染
- python - 文件没有打开也没有通过 python 代码写入