代码之家  ›  专栏  ›  技术社区  ›  Tim Ridgely

JSON.NET:将JSON对象的一部分反序列化到字典

  •  5
  • Tim Ridgely  · 技术社区  · 14 年前

    我有这样的JSON:

    {
       "Property":"Blah blah",
       "Dictionary": {
            "Key1" : "Value1",
            "Key2" : "Value2",
            "Key3" : "Value3"
       }
    }
    

     JsonConvert.DeserializeObject<Dictionary<string, string>>
    

    什么是获得字典属性作为字典的最佳方法?

    提前谢谢! 提姆

    4 回复  |  直到 14 年前
        1
  •  10
  •   Tim Ridgely    14 年前

    我花了一点时间才弄明白,但我只是觉得用字符串解析或正则表达式来获得我想要的内部JSON并不好。

    很简单;我做了一些事情来获取内部数据:

    var jObj = JObject.Parse(jsonText);
    var innerJObj = JObject.FromObject(jObj["Dictionary"]);
    

    效果很好。

        2
  •  1
  •   Gabriel McAdams    14 年前

    我认为您必须解析JSON并移除外部对象。您可以指定要反序列化到哪种对象,但无法告诉它不要反序列化最外层的对象。

        3
  •  1
  •   Jeroen K Airen    6 年前

    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;
    
        4
  •  0
  •   Community CDub    8 年前

    your answer 是为了 (de)serialize json fragments . 阿尔索 answered here ,但您的解决方案看起来更简洁。