Usuário com melhor resposta
Como converter JSON para classe .NET C# (serializar)

Pergunta
-
Olá boa tarde.
Eu tenho o seguinte JSON
{ "positions": [ { "id": 2033045642, "placa": "XXX1234", "serialNumber": "1254987", "coord": [-20.5190, -50.6472], "end": "R. São Paulo, 100, Londrina, PR", "dInc": "2014-05-23T14:45:59.603Z", "dPos": "2014-05-23T14:18:02.000Z", "motorista": "12345678914", "info": { "odo": 789.15, "rpm": 900, "vel": 0, "ign": true, "log": true, "gps": true }, "eventos": [ { "desc": "Ignição Ligada", "src": true } ], "macros": [ { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" } ] } , { "id": 2033045643, "placa": "XXX1234", "serialNumber": "1254987", "coord": [-20.5110, -50.6432], "end": "R. São Paulo, 100, Londrina, PR", "dInc": "2014-05-23T14:48:59.603Z", "dPos": "2014-05-23T14:21:02.000Z", "motorista": "12345678914", "info": { "odo": 792.01, "rpm": 1200, "vel": 50, "ign": true, "log": false, "gps": true }, "eventos": [ { "desc": "Ignição Ligada", "src": false }, { "desc": "Direção sob chuva", "src": false } ], [ { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" } ] } ] }
Preciso ler estes dados num web service WCF. Para isso, criei a classe abaixo, mas não consigo ler os dados dos nós.
[DataContract] public partial class cCarga { [DataMember] public positions[] positions { get; set; } } [DataContract] public partial class positions { [DataMember] public cpositions _positions { get; set; } [DataMember] public info _info { get; set; } [DataMember] public eventos[] _eventos { get; set; } [DataMember] public macros[] _macros { get; set; } [DataContract] public partial class cpositions { [DataMember] public string id { get; set; } [DataMember] public string placa { get; set; } [DataMember] public string serialNumber { get; set; } [DataMember] public string coord { get; set; } [DataMember] public string end { get; set; } [DataMember] public string dInc { get; set; } [DataMember] public string dPos { get; set; } [DataMember] public string motorista { get; set; } //[DataMember] //public info info { get; set; } } } [DataContract] public partial class info { //[DataMember] //public cinfo _info { get; set; } //[DataContract] //public partial class cinfo //{ [DataMember] public string odo { get; set; } [DataMember] public string rpm { get; set; } [DataMember] public string vel { get; set; } [DataMember] public string ign { get; set; } [DataMember] public string log { get; set; } [DataMember] public string gps { get; set; } //} } [DataContract] public partial class eventos { //[DataMember] //public ceventos _eventos { get; set; } //[DataContract] //public partial class ceventos //{ [DataMember] public string desc { get; set; } [DataMember] public string src { get; set; } //} } [DataContract] public partial class macros { //[DataMember] //public cmacros _macro { get; set; } //[DataContract] //public partial class cmacros //{ [DataMember] public string desc { get; set; } [DataMember] public string aprProc { get; set; } //} }
O que aparece são somente o nó root. veja imagem.
Alguém pode ajudar, indicar uma documentação, ou outra forma de ler os dados?
Obrigado.
Respostas
-
Boa tarde,
José o retorno "json" está em um formato inválido. Observe abaixo da "tag eventos" que você realiza a abertura e fechamento mas não associa um nome. Para solucionar este problema você pode fazer assim:
"eventos": [ { "desc": "Ignição Ligada", "src": false }, { "desc": "Direção sob chuva", "src": false }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" } ] ou "eventos": [ { "desc": "Ignição Ligada", "src": false }, { "desc": "Direção sob chuva", "src": false } ], "eventos2": [ { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" } ]
Para criar a classe de acordo com o "json" você pode copiar gerar aqui:
http://json2csharp.com/Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta Jose Geraldo segunda-feira, 25 de abril de 2016 18:39
-
Copie o código do seu JSON, abra o VS e crie uma classe, depois no menu do VS faça como na imagem abaixo que vai gerar sua classe c# baseada no seu JSON, veja:
- Editado Poliana Dias segunda-feira, 25 de abril de 2016 18:37
- Marcado como Resposta Jose Geraldo segunda-feira, 25 de abril de 2016 18:48
Todas as Respostas
-
Boa tarde,
José o retorno "json" está em um formato inválido. Observe abaixo da "tag eventos" que você realiza a abertura e fechamento mas não associa um nome. Para solucionar este problema você pode fazer assim:
"eventos": [ { "desc": "Ignição Ligada", "src": false }, { "desc": "Direção sob chuva", "src": false }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" } ] ou "eventos": [ { "desc": "Ignição Ligada", "src": false }, { "desc": "Direção sob chuva", "src": false } ], "eventos2": [ { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" }, { "desc": " 223|SAIDA PDV|435776||", "aprProc": " PDV:435776" } ]
Para criar a classe de acordo com o "json" você pode copiar gerar aqui:
http://json2csharp.com/Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta Jose Geraldo segunda-feira, 25 de abril de 2016 18:39
-
Copie o código do seu JSON, abra o VS e crie uma classe, depois no menu do VS faça como na imagem abaixo que vai gerar sua classe c# baseada no seu JSON, veja:
- Editado Poliana Dias segunda-feira, 25 de abril de 2016 18:37
- Marcado como Resposta Jose Geraldo segunda-feira, 25 de abril de 2016 18:48
-
-