c# - Deserializing JSON into an object -
i have json:
{ "foo" : [ { "bar" : "baz" }, { "bar" : "qux" } ] }
and want deserialize collection. have defined class:
public class foo { public string bar { get; set; } }
however, following code not work:
jsonconvert.deserializeobject<list<foo>>(jsonstring);
how can deserialize json?
that json not foo
json array. code jsonconvert.deserializeobject<t>(jsonstring)
parse json string from root on up, , type t
must match json structure exactly. parser not going guess which json member supposed represent list<foo>
you're looking for.
you need root object, represents json root element.
you can let classes generated sample json. this, copy json , click edit -> paste special -> paste json classes
in visual studio.
alternatively, same on http://json2csharp.com, generates more or less same classes.
you'll see collection 1 element deeper expected:
public class foo { public string bar { get; set; } } public class rootobject { public list<foo> foo { get; set; } }
now can deserialize json root (and sure rename rootobject
useful):
var rootobject = jsonconvert.deserializeobject<rootobject>(jsonstring);
and access collection:
foreach (var foo in rootobject.foo) { // foo `foo` }
you can rename properties follow casing convention , apply jsonproperty
attribute them:
public class foo { [jsonproperty("bar")] public string bar { get; set; } }
also make sure json contains enough sample data. class parser have guess appropriate c# type based on contents found in json.
Comments
Post a Comment