我有下一个json:
{
"foo": "foo",
"bars": {
"bar": [
{
"a":"b",
"c":"d"
},
{
"a":"b",
"c":"d"
},
]
}
}
正如您所看到的,有一个包含数组的属性。我如何将这个json反序列化为下一个类签名
class SomeClass
{
public string foo{ get;set;}
public IEnumerable<bar> {get;set;}
}
而不是
class SomeClass
{
public string foo{ get;set;}
public Bars bars {get;set;}
}
class Bars
{
public IEnumerable<bar> {get;set;}
}
如果您对json:进行了一些修改,则此代码应该可以工作
var myObj = new JavaScriptSerializer().Deserialize<SomeClass>(json);
您的json:
{
"foo": "foo",
"bars": /*{
"bar": this should be removed*/
[
{
"a":"b",
"c":"d"
},
{
"a":"b",
"c":"d"
} /*, and this comma*/
]
/*} and this closing bracket too*/
}
您可以创建一个映射到类的公共列表:
class SomeClass
{
public string foo{ get;set;}
private BarItems bars {get;set;}
public IEnumerable<Bar> Bars
{
get
{
return bars.bar ?? new IEnumerable<Bar>();
}
set
{
bars.bar = value;
}
}
}
class BarItems
{
public IEnumerable<Bar> bar {get;set;}
}
在使用对象时,它最不可能使对象更可用。