i3a*_*non 17 .net c# serialization json json.net
我正在使用Json.Net将类序列化和反序列化为json和back.
我添加了一个标有[JsonObject(ItemRequired = Required.Always)](或Required.Always)新的get-only属性的类.这导致以下结果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);
}
Run Code Online (Sandbox Code Playgroud)
i3a*_*non 27
显然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; }}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19512 次 |
| 最近记录: |