Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
460 views
in Technique[技术] by (71.8m points)

deserialize part of json string (array) in c#

I have a json string like this:

{  
"Results":[  
  {  
   "attr1": "value1",
   "attr2": "value2",
   "A": "value_a",
   "B": "value_b",
   "C": "value_c", 
   "GuestValues":[  
        {  
            "A": "value_a",
            "B": "value_b",
            "C": "value_c"
        },
        {  
            "A": "value_a",
            "B": "value_b",
            "C": "value_c"
        },
        {  
            "A": "value_a",
            "B": "value_b",
            "C": "value_c"
        }
}
],
"TotalResults":1,
"MilliSeconds":11
}

I want to deserialize only the GuestValues array. I created a class like this:

public class GuestValue
{
    public string A;
    public string B;
    public string C;
}

public class GuestValueResult
{
    public List<GuestValue> GuestValues { get; set; }
    public in TotalResults { get; set; }
}

And call it like this:

GuestValueResult guestValues = JsonConvert.DeserializeObject<GuestValueResult>(jsongString);

But it doesn't work. I tried a lot, once somehow, it only gives me back the first "A", "B", "C" in the jsonString, the one above the "GuestValues", I don't want that group of data. I only want those inside "GuestValues". Please help.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use Linq to JSON (part of JSON.NET) to access the relevant node, then deserialize it:

var root = JObject.Parse(jsonString);
var guestValues = root["Results"][0]["GuestValues"].ToObject<GuestValue[]>();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...