Usuário com melhor resposta
Deserialize Json para c#

Pergunta
-
Olá pessoal, estou a ter alguns problemas a fazer o Deserialize de um ficheiro Json usando o Newtonsoft.
O ficheiro Json contem o seguinte:
[ { "Name": "PRO", "Price": 150, "Specs": [ { "A": "Pagina Inicial", "B": "Pagina Detalhes da Empresa" } ], "Design": 100, "Manutencao": 100, "SSL": 100 }, { "Name": "ULTRA", "Price": 200, "Specs": [ { "A": "Pagina Inicial", "B": "Pagina Detalhes da Empresa" } ], "Design": 120, "Manutencao": 200, "SSL": 100 } ]
O meu código está assim:
var json = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\PlanosWeb.json"); var plan = JsonConvert.DeserializeObject<Planos[]>(json);
O erro dá na variável plan…
Erro: System.ArgumentException: Could not cast or convert from System.String to System.Collections.Generic.List`1[GIT.Specs].
Alguma ideia de como resolver?
Cumprimentos
Respostas
-
Olá,
Tente fazer o Deserialize para uma lista de Planos ex:
var json = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\PlanosWeb.json"); List<Planos> ListPlanos = JsonConvert.DeserializeObject<List<Planos>>(json);
outro detalhe, sua propiedade Specs na sua classe planos é uma string e seu json esta retornando um array, veja só :
"Specs": [ { "A": "Pagina Inicial", "B": "Pagina Detalhes da Empresa" } ],
é ai que acontece o erro, veja a mensagem:
"Could not cast or convert from System.String to System.Collections.Generic.List`1[GIT.Specs]."
em sua classe planos tente o seguinte:
public class Planos { public string Name { get; set; } public int Price { get; set; } public List<string> Specs { get; set; } public int Design { get; set; } public int Manutencao { get; set; } public int SSL { get; set; } }
- Editado Paulo Felipe Leite segunda-feira, 3 de dezembro de 2018 10:11
- Sugerido como Resposta Paulo Felipe Leite terça-feira, 4 de dezembro de 2018 14:03
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 31 de janeiro de 2019 19:34
Todas as Respostas
-
Qual o código da classe Planos e demais tipos usados na mesma?
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Esqueci-me de colocar a class…
public class Planos { public string Name { get; set; } public int Price { get; set; } public string Specs { get; set; } public int Design { get; set; } public int Manutencao { get; set; } public int SSL { get; set; } }
-
Olá,
Tente fazer o Deserialize para uma lista de Planos ex:
var json = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\PlanosWeb.json"); List<Planos> ListPlanos = JsonConvert.DeserializeObject<List<Planos>>(json);
outro detalhe, sua propiedade Specs na sua classe planos é uma string e seu json esta retornando um array, veja só :
"Specs": [ { "A": "Pagina Inicial", "B": "Pagina Detalhes da Empresa" } ],
é ai que acontece o erro, veja a mensagem:
"Could not cast or convert from System.String to System.Collections.Generic.List`1[GIT.Specs]."
em sua classe planos tente o seguinte:
public class Planos { public string Name { get; set; } public int Price { get; set; } public List<string> Specs { get; set; } public int Design { get; set; } public int Manutencao { get; set; } public int SSL { get; set; } }
- Editado Paulo Felipe Leite segunda-feira, 3 de dezembro de 2018 10:11
- Sugerido como Resposta Paulo Felipe Leite terça-feira, 4 de dezembro de 2018 14:03
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 31 de janeiro de 2019 19:34
-