C# 如何使用自定义路径序列化json数组?
我有下一个问题:C# 如何使用自定义路径序列化json数组?,c#,json.net,C#,Json.net,我有下一个问题: { "foo": "foo", "bars": { "bar": [ { "a":"b", "c":"d" }, { "a":"b", "c":"d" }, ] }
{
"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
{
公共字符串foo{get;set;}
公共IEnumerable{get;set;}
}
而不是
class SomeClass
{
public string foo{ get;set;}
public Bars bars {get;set;}
}
class Bars
{
public IEnumerable<bar> {get;set;}
}
class-SomeClass
{
公共字符串foo{get;set;}
公共酒吧{get;set;}
}
分类栏
{
公共IEnumerable{get;set;}
}
?如果您对json进行了一些修改,则此代码应该可以工作:
var myObj = new JavaScriptSerializer().Deserialize<SomeClass>(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;}
}
class-SomeClass
{
公共字符串foo{get;set;}
私有BarItems条{get;set;}
公共可数酒吧
{
收到
{
返回bar.bar??新的IEnumerable();
}
设置
{
bar.bar=值;
}
}
}
重晶石级
{
公共IEnumerable条{get;set;}
}
它至少使对象在使用时更可用。我不需要它。我需要删除结果类中的额外属性。请查看此。同样的主题也在讨论中,json对象的格式有点不同,但它还有一个额外的属性。我希望我可以用json.net属性来实现这一点。谢谢,我知道如何反序列化格式良好的json:)问题是因为我无法在服务器上编辑此json。不希望在我的代码中编辑json。