如何用自定义路径序列化json数组



我有下一个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;}
}

在使用对象时,它最不可能使对象更可用。

相关内容

  • 没有找到相关文章

最新更新