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。