gpt4 book ai didi

c# - JsonConvert.PopulateObject 不使用 JsonConverter 类属性

转载 作者:太空宇宙 更新时间:2023-11-03 15:11:44 29 4
gpt4 key购买 nike

尝试使用 JsonConvert.PopulateObject 更新类属性时,未调用 JsonPathConverter,因此未完成填充。

示例类:

[JsonConverter(typeof(JsonPathConverter))]
public class SampleClass
{
int id;
[JsonProperty("sample.id")]
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
}

调用 PopulateObject:

var sampleClass = new SampleClass() {
Id = 1
};

var str = "{sample:{id:2}}";
JsonConvert.PopulateObject(str, sampleClass, new JsonSerializerSettings());

但是 Id 属性永远不会设置为 2。

我已经尝试使用 JsonSerializerSettingsconverter = new JsonPathConverter() 但它也不起作用。

知道为什么它不起作用吗?

最佳答案

注意:我假设 JsonPathConverter您在问题中指的是 this answer 中的那个.

ReadJson仅在 JsonConverter 上调用何时实例化由转换器处理的对象。自 PopulateObject适用于已经实例化的对象,您转换器的 ReadJson PopulateObject 不会调用方法.这是设计使然。如果你使用 JsonConvert.DeserializeObject<T>而不是 JsonConvert.PopulateObject ,那么转换器将按预期调用:

var sampleClass = JsonConvert.DeserializeObject<SampleClass>(str);

fiddle :https://dotnetfiddle.net/lxiirm

关于c# - JsonConvert.PopulateObject 不使用 JsonConverter 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40855380/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com