我有下一个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;}
}
答案 0 :(得分:0)
如果您对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*/
}
答案 1 :(得分:0)
您可以创建映射到班级的公共列表:
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;}
}
使用它时,它最不会使对象更有用。