如何解决在将Json.Net与ItemRequired = Required一起使用反序列化时,忽略属性
显然JsonIgnore
,在这种情况下,只能控制序列化。JsonIgnore
需要指定该FullName
属性不应序列化为json表示形式。
要在反序列化期间忽略该属性,我们需要添加JsonProperty
带有的注释Required = Required.Default
(这意味着不需要)。
因此,这是如何避免JsonSerializationException
:
[JsonObject(ItemRequired = Required.Always)]
public class Hamster
{
public string FirstName { get; set; }
public string LastName { get; set; }
[JsonIgnore]
[JsonProperty(Required = Required.Default)]
public string FullName { get { return FirstName + LastName; }}
}
解决方法
我正在使用Json.Net将类序列化和反序列化为json并返回。
我在标有[JsonObject(ItemRequired =
Required.Always)]
(或Required.Always
)新的仅获取属性的类中添加了代码。结果如下JsonSerializationException
:
Newtonsoft.Json.JsonSerializationException:
'<PropertyName>'
在JSON中找不到必需的属性
我以为标记该属性JsonIgnore
可以解决此问题,但这不起作用。
我如何告诉Json.Net应该忽略此属性?
这是重现此问题的最小示例:
[JsonObject(ItemRequired = Required.Always)]
public class Hamster
{
public string FirstName { get; set; }
public string LastName { get; set; }
[JsonIgnore]
public string FullName { get { return FirstName + LastName; }}
}
private static void Main()
{
var hamster = new Hamster {FirstName = "Bar",LastName = "Arnon"};
var serializeObject = JsonConvert.SerializeObject(hamster);
var deserializeObject = JsonConvert.DeserializeObject<Hamster>(serializeObject);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。