- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尝试使用 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。
我已经尝试使用 JsonSerializerSettings
和 converter = 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/
我正在尝试填充自定义枚举的现有实例,该实例包含包含 enum 属性的对象。当我这样做时,我从 JsonConvert.PopulateObject() 收到错误 System.ArgumentNull
我在 .Net 4.5 中使用 Json.Net,当在以下对象上使用填充对象时,它会使用 json 的内容增加列表而不是设置它的值。 Json.Net JsonConvert.PopulateObje
我有一个通过 toJSON 来自 javascript 的日期,所以它存储为 UTC 时间,但我想将它作为本地时间存储在数据库中(我们过去从未存储过 UTC 时间,所以我需要继续这里的趋势)。 但是,
尝试使用 JsonConvert.PopulateObject 更新类属性时,未调用 JsonPathConverter,因此未完成填充。 示例类: [JsonConverter(typeof(Jso
我想加载 JSON 格式的稀疏数据以获得用默认值填充缺失数据的结果,但我的默认值包括可扩展集的预定义实例,而不仅仅是固定字段。 对于(任意)例子, 类型 class Link { public
是否可以定义用于 JsonConvert.PopulateObject 方法的自定义“列表合并”策略? 示例: 我有两个模型: class Parent { public Guid Uuid
我是一名优秀的程序员,十分优秀!