我有这样的JSON:
{
"Property":"Blah blah",
"Dictionary": {
"Key1" : "Value1",
"Key2" : "Value2",
"Key3" : "Value3"
}
}
我想将“Dictionary”对象提取为字典(所以它就像Key1 => Value1等)。如果我直接使用“Dictionary”对象,我可以使用:
JsonConvert.DeserializeObject<Dictionary<string, string>>
将Dictionary属性作为字典的最佳方法是什么?
提前致谢! 添
答案 0 :(得分:10)
我花了一点时间才弄明白,但是我觉得使用字符串解析或正则表达式获得我想要的内部JSON感觉不太好。
足够简单;我在这些方面做了一些事情来获取内部数据:
var jObj = JObject.Parse(jsonText);
var innerJObj = JObject.FromObject(jObj["Dictionary"]);
运作良好。
答案 1 :(得分:1)
我认为您必须解析JSON并删除外部对象。您可以指定要反序列化的对象类型,但没有办法告诉它不要反序列化最外层的对象。
答案 2 :(得分:0)
供参考,your answer是(de)serialize json fragments。另外answered here,但您的解决方案看起来更简洁。 对性能差异感到好奇......
答案 3 :(得分:0)
您还可以在类中将属性定义为Dictionary
。
var str = @"{
""Property"":""Blah blah"",
""Dictionary"": {
""Key1"" : ""Value1"",
""Key2"" : ""Value2"",
""Key3"" : ""Value3""
}
}";
class MyObject {
string Property { get; set; }
Dictionary<string, string> Dictionary { get; set; }
}
MyObject obj = JsonConvert.DeserializeObject<MyObject>(str);
var dict = obj.Dictionary;