我目前正在使用 REST Api,我无法控制它并构建了模型以与我从 Api 收到的 json 对应。
尽管有问题的 Api 不允许我在发布帖子时将整个模型推回,因此我需要找到一种方法来完全反序列化 json,但仅在序列化时写入选定的数据。
到目前为止,我已经尝试过 JsonIgnore,它执行它在罐头上所说的并且完全忽略了该属性。
然后我创建了一个自定义属性 JsonWriteAttribute 并将其应用于我想要序列化的属性。
我已经看过覆盖 DefaultContractResolver CreateProperties 方法,然后只获取具有该属性的属性,但如果我正在执行读取或写入操作,我似乎无法从解析器中的方法或属性中确定。
我也试过查看自定义 JsonConverter,但似乎我无法中断管道,然后必须自己处理所有写入。我是否在这里遗漏了一些东西,因为这似乎是正确的想法?
有没有人想出一种在使用 Json.Net 进行序列化、反序列化时将属性标记为只读的方法?
谢谢
条件序列化属性的一种可能性是 ShouldSerialize
http://www.newtonsoft.com/json/help/html/ConditionalProperties.htm
您创建了一个返回 bool 的方法,以确定您的属性是否应该被序列化。该方法以 ShouldSerialize 开头并以您的属性名称结尾。例如ShouldSerializeMyProperty
一个例子
public MyClass
{
public string MyProp { get; set; }
public string ExcludeThisProp { get; set; }
public int MyNumber { get; set; }
public int ExcludeIfMeetsCondition { get; set; }
//Define should serialize options
public bool ShouldSerializeExcludeMyProp() { return (false); } //Will always exclude
public bool ShouldSerializeExcludeIfMeetsCondition()
{
if (ExcludeIfMeetsCondition > 10)
return true;
else if (DateTime.Now.DayOfWeek == DayOfWeek.Monday)
return true;
else
return false;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句