根据JSON结构创建C#类

时间:2018-08-07 19:56:36

标签: c# xamarin.forms json.net deserialization json-deserialization

我正在处理Xamarin表格。我创建了一个用于反序列化JSON的C#类。但是我不知道该怎么说。甚至使用过this option,但仍然出现此错误:

  

System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.NotSupportedException:创建表时不了解System.Collections.Generic.List`。

这是我的JSON

[{
    "firstName":"X", 
    "lastName":"Y", 
    "Ids":["1"],
    "specialIds":[],
    "options":{
        "isAccepting":false
    }
}, 
{   
    "firstName":"Z", 
    "lastName":"A", 
    "Ids":["11"], 
    "specialIds":[],
    "options":{
        "isAccepting":false}
    },
}]

这是我的C#

public class Provider
{
    public string firstName { get; set; }
    public string lastName { get; set; }

    public List<string> Ids { get; set; }
    public List<string> specialIds { get; set; }
    public Options options { get; set; }
}
public class Options
{
    public bool isAccepting { get; set; }
}

如何在C#中分配ID,SpecialId和选项?如果我仅使用名字和姓氏,则效果很好。但是,如果我使用其他的,就会出错。 请帮助我按照上述JSON分配此对象。

1 个答案:

答案 0 :(得分:0)

您当前的Json无效,看起来应该像这样:

[
  {
    "firstName": "X",
    "lastName": "Y",
    "Ids": [
      "1"
    ],
    "specialIds": [],
    "options": {
      "isAccepting": false
    }
  },
  {
    "firstName": "Z",
    "lastName": "X",
    "Ids": [
      "11"
    ],
    "specialIds": [],
    "options": {
      "isAccepting": false
    }
  }
]

如果您想要它的C#模式,它将看起来像这样:

public class Provider
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public IList<string> Ids { get; set; }
    public IList<string> specialIds { get; set; }
    public Options options { get; set; }
}

public class Options
{
    public bool isAccepting { get; set; }
}
  

如何在C#中分配ID,SpecialId和选项?如果我只是用   名和姓,它运行正常。但是如果我使用   其他人,我出错了。请帮助我按照以下方式分配该对象   上面提到的JSON。

请记住,您未直接分配给值,而是追加了字符串列表项

    IList<string> items = new IList<string>();
    items.add("12");