簡體   English   中英

嘗試反序列化Json到對象

[英]Trying to Deserialize Json to Object

我正在嘗試反序列化JSON,但是我對象的所有屬性都為null。

我的JSON:

{"List":{"item":[{"id":"47861","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"BALDE","tipoEmbalagem":"AÇO","volume":"20.0000","unidade":"LITROS"},{"id":"47863","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"BOMBONA","tipoEmbalagem":"PLASTICO","volume":"5.0000","unidade":"LITROS"},{"id":"47865","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"BOMBONA","tipoEmbalagem":"PLASTICO","volume":"10.0000","unidade":"LITROS"},{"id":"47867","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"BOMBONA","tipoEmbalagem":"PLASTICO","volume":"20.0000","unidade":"LITROS"},{"id":"47869","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"CAIXA","tipoEmbalagem":"PAPELÃO","volume":"20.0000","unidade":"LITROS"},{"id":"47871","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"FRASCO","tipoEmbalagem":"PLASTICO","volume":"1.0000","unidade":"LITROS"},{"id":"47873","nome":"2,4-D AMINA 840 SL","codMapa":"5002","fabricante":"ALBAUGH AGRO BRASIL LTDA","embalagem":"TAMBOR","tipoEmbalagem":"AÇO","volume":"200.0000","unidade":"LITROS"}]}}


我的課:

    public class ListaProdutosAutorizados
    {
        public List<ProdutoAutorizado> ProdutosAutorizados { get; set; }
    }

    public class ProdutoAutorizado
    {
        public int id { get; set; }
        public string nome { get; set; }
        public int? codMapa { get; set; }
        public string fabricante { get; set; }
        public string embalagem { get; set; }
        public string tipoEmbalagem { get; set; }
        public decimal? volume { get; set; }
        public string unidade { get; set; }
    }

而我的代碼:

var lResposta = JsonConvert.DeserializeObject<ListaProdutosAutorizados>(stringJson, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });

您的JSON應該類似於C#類:

[
  {
    "id": 47861,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "BALDE",
    "tipoEmbalagem": "AÇO",
    "volume": 20.0000,
    "unidade": "LITROS"
  },
  {
    "id": 47863,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "BOMBONA",
    "tipoEmbalagem": "PLASTICO",
    "volume": 5.0000,
    "unidade": "LITROS"
  },
  {
    "id": 47865,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "BOMBONA",
    "tipoEmbalagem": "PLASTICO",
    "volume": 10.0000,
    "unidade": "LITROS"
  },
  {
    "id": 47867,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "BOMBONA",
    "tipoEmbalagem": "PLASTICO",
    "volume": 20.0000,
    "unidade": "LITROS"
  },
  {
    "id": 47869,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "CAIXA",
    "tipoEmbalagem": "PAPELÃO",
    "volume": 20.0000,
    "unidade": "LITROS"
  },
  {
    "id": 47871,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "FRASCO",
    "tipoEmbalagem": "PLASTICO",
    "volume": 1.0000,
    "unidade": "LITROS"
  },
  {
    "id": 47873,
    "nome": "2,4-D AMINA 840 SL",
    "codMapa": 5002,
    "fabricante": "ALBAUGH AGRO BRASIL LTDA",
    "embalagem": "TAMBOR",
    "tipoEmbalagem": "AÇO",
    "volume": 200.0000,
    "unidade": "LITROS"
  }
]

請注意,您的idcodMapavolume屬性可能會錯誤地反序列化,因為它們在原始JSON中的類型是字符串,而不是十進制或整數。

如果將此新JSON反序列化為List<ProdutoAutorizado>則它應該可以工作。

您需要在json文件上使用相同的屬性名稱。 在您的示例中,您具有List那么C#類中必須有一個名為List的屬性,並且該item也必須具有相同的屬性。

匹配它們的另一種方法是使用JsonProperty屬性。

檢查此問題以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM