开发者

JSON.NET: Deserializing part of a JSON object to a dictionary

开发者 https://www.devze.com 2023-01-22 09:54 出处:网络
I have JSON like this: { \"Property\":\"Blah blah\", \"Dictionary\": { \"Key1\" : \"Value1\", \"Key2\" : \"Value2\",

I have JSON like this:

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

I want to extract the "Dictionary" object as a Dictionary (so it'd be like Key1 => Value1, etc.). If I just had the "Dictionary" object directly, I could use:

 JsonConvert.DeserializeObject<Dictionary<string, string>>

What's the best way to get just the Dictionary p开发者_如何学运维roperty as a Dictionary?

Thanks in advance! Tim


Took me a little while to figure out, but I just didn't feel great about using string parsing or regexes to get at the inner JSON that I want.

Simple enough; I did something along these lines to get at the inner data:

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

Works well enough.


I think you'd have to parse the JSON and remove the outer object. You can dictate what kind of object you are deserializing to, but there is no way to tell it NOT to deserialize the outermost object.


You could also define the property as Dictionary in a class.

 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;


For reference, your answer is to (de)serialize json fragments. Also answered here, but your solution looks more succinct. Curious about performance differences...

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号