Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deserialize json with json.net c#

Tags:

c#

json.net

am new to Json so a little green.

I have a Rest Based Service that returns a json string;

{"treeNode":[{"id":"U-2905","pid":"R","userId":"2905"},
{"id":"U-2905","pid":"R","userId":"2905"}]}

I have been playing with the Json.net and trying to Deserialize the string into Objects etc. I wrote an extention method to help.

public static T DeserializeFromJSON<T>(this Stream jsonStream, Type objectType)
        {
            T result;

            using (StreamReader reader = new StreamReader(jsonStream))
            {
                JsonSerializer serializer = new JsonSerializer();
                try
                {
                    result = (T)serializer.Deserialize(reader, objectType);
                }
                catch (Exception e)
                {   
                    throw;
                }

            }
            return result;
        }

I was expecting an array of treeNode[] objects. But its seems that I can only deserialize correctly if treeNode[] property of another object.

public class treeNode
{
    public string id { get; set; }
    public string pid { get; set; }
    public string userId { get; set; }
}

I there a way to to just get an straight array from the deserialization ?

Cheers

like image 657
76mel Avatar asked Oct 26 '22 02:10

76mel


1 Answers

You could use an anonymous class:

T DeserializeJson<T>(string s, T templateObj) {
    return JsonConvert.Deserialize<T>(s);
}

and then in your code:

return DeserializeJson(jsonString, new { treeNode = new MyObject[0] }).treeNode;
like image 65
erikkallen Avatar answered Nov 15 '22 07:11

erikkallen