所以我有一个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
答案 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;
}