显然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);}