VeY*_*roN 5 c# json.net deserialization
当尝试使用 更新类属性时,不会JsonConvert.PopulateObject调用JsonPathConverter,因此填充不会完成。
示例类:
[JsonConverter(typeof(JsonPathConverter))]
public class SampleClass
{
int id;
[JsonProperty("sample.id")]
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
拨电至PopulateObject:
var sampleClass = new SampleClass() {
Id = 1
};
var str = "{sample:{id:2}}";
JsonConvert.PopulateObject(str, sampleClass, new JsonSerializerSettings());
Run Code Online (Sandbox Code Playgroud)
但该Id属性永远不会设置为 2。
我已经尝试JsonSerializerSettings过,converter = new JsonPathConverter()但它也不起作用。
知道为什么它不起作用吗?
注意:我假设您在问题中提到的就是这个答案JsonPathConverter中的那个。
ReadJsonJsonConverter仅当需要实例化由转换器处理的对象时才调用 a 。由于适用于已PopulateObject实例化的对象,因此转换器的方法将不会被. 这是设计使然。如果您使用而不是,那么转换器将按预期被调用:ReadJsonPopulateObjectJsonConvert.DeserializeObject<T>JsonConvert.PopulateObject
var sampleClass = JsonConvert.DeserializeObject<SampleClass>(str);
Run Code Online (Sandbox Code Playgroud)
小提琴: https: //dotnetfiddle.net/lxiirm