无法将当前JSON对象反序列化为List

时间:2018-01-22 13:54:11

标签: c# json xml serialization json.net

我试图反序化这个json:

{
  "veiculo": [
    {
      "categoria": "B",
      "placa": "NLI2892"
    },
    {
      "categoria": "A",
      "placa": "OML8712"
    },
    {
      "categoria": "B",
      "placa": "PQU1492"
    },
    {
      "categoria": "B",
      "placa": "JIC1381"
    },
    {
      "categoria": "A",
      "placa": "ONB1093"
    }
  ]
}

这是我的目标:

public class VehicleGO
{
    [JsonProperty(PropertyName = "placa")]
    public string Plate { get; set; }

    [JsonProperty(PropertyName = "categoria")]
    public string Category { get; set; }
}

当我尝试反序列化时:

var vehicles = JsonConvert.DeserializeObject<List<VehicleGO>>(json);

我收到以下错误:

  

无法反序列化当前的JSON对象(例如{&#34; name&#34;:&#34; value&#34;})   进入类型   &#39; System.Collections.Generic.List`1 [rdscanweb.Models.BaseViewModels.VehicleGO]&#39;   因为该类型需要一个JSON数组(例如[1,2,3])来反序列化   正确。要修复此错误,请将JSON更改为JSON数组   (例如[1,2,3])或更改反序列化类型以使其正常   .NET类型(例如,不是整数的基本类型,不是集合   类似于数组或List的类型,可以从JSON反序列化   对象

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

这种结构应该这样做。

public class VehicleGO
{
    [JsonProperty(PropertyName = "placa")]
    public string Plate { get; set; }
    [JsonProperty(PropertyName = "categoria")]
    public string Category { get; set; }
}

public class Vehicles
{
    public List<Veiculo> veiculo { get; set; }
}