我有一个类似的json结构:
{
"eventType1": {
"unitName": "nameValue",
"comment": "initial comment"
},
"eventType2": {
"comment": "initial message"
},
}
当我反序列化它时,适当的类型似乎类似Dictionary<string, <Dictionary<string,string>>>
,方法看起来像这样:
public static Dictionary<string, Dictionary<string, string>> defaultFieldDataByEvent =
JsonConvert
.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(defaultFieldDataByEventSerialized);
看起来很丑陋。但这正是我需要它来提取数据的方法 - defaultFieldDataByEvent[eventType][field]
。
我能否以某种方式将类型封装成某种形式,或者是否存在针对此类情况的不同方法?
答案 0 :(得分:0)
我在这里看到了多种可能的选择。希望这些都有帮助。
JObject.Parse
进行反序列化,保持较低级别。但是,就你的json结构而言,这种方法可能效果很好。ExpandoObject
。它与JObject
非常相似,除了你会得到相当不错的动态代码(动态在这里不是问题,因为编译器也不会帮助你Dictionary
),但它显然会降低性能。您可能会丢失自定义类型信息,因为图表中的所有内容都将变为ExpandoObject
,但对您的案例而言似乎不是问题。 Example可以在这里找到。[JsonExtensionData]
作为@dbc建议。见How to serialize a Dictionary as part of its parent object using Json.Net。