【发布时间】:2018-10-13 11:00:35
【问题描述】:
我遇到了这种(看似常见的)场景,但找不到令人满意的解决方案。也许有人知道:
出于某种原因,我解析 JSON 并允许用户提供比我的类具有的属性更多的键值对。我像这样存储任意的:
class MusterNode
{
// some definite property
public string TypeName { get; set; }
// takes the rest
// see https://www.newtonsoft.com/json/help/html/DeserializeExtensionData.htm
[JsonExtensionData]
private Dictionary<string, JToken> _extparams;
}
如果我反序列化类似的东西
{
"TypeName": "a",
"stuff": 3
}
TypeName 将被设置并且我的 _extparams 包含一个键“stuff”。
出于某种原因,我想将存储的数据应用到另一个(刚刚创建的)对象“obj”(实际上,参数被认为是那个类型名的东西)。 所以我有一个字典和一个对象。有没有办法在不先序列化的情况下“应用”字典?
我不满意的解决方案是:
string json = JsonConvert.SerializeObject(_extparams);
JsonConvert.PopulateObject(json, obj);
用一些 JsonSerializerSettings 装饰,这对我有用。但它做了不必要的工作。
【问题讨论】:
-
你的
obj是什么类型的? -
对于这个问题并不重要。想象一下序列化的键值对匹配对象的属性和类型(通过智能)
标签: c# .net json serialization json.net