GARANTIR DESCONTO

Fórum JsonToObject #572259

06/12/2016

0

boa noite a todos!

Tenho o seguinte Json:

{"pre_venda": {
"COD_BOLETA": 1025,
"LOJA": 999,
"DATAMOV": "05/12/2016",
"HORA": "14:30:35",
"VALORTOTAL": "200.00",
"DESCONTO": "30.00",
"ACRESCIMO": "",
"LIQUIDO": "170.00",
"STATUS": 1,
"VENDEDOR": "1",
"CLIENTE": 1,
"NOMECLIENTE": "DIEGO BUENO SAMPAIO",
"DOCCLIENTE": "40177451807",
"USU_PREVENDA": "1",
"USU_ESTORNO": "",
"MOTIVO": "",
"ORIGEM": "V",
"FP_PGTO": "DINHEIRO",

"produtos": [
{"LOJA": 999,
"PRODUTO": "2030002",
"TAMANHO": "36",
"QUANTIDADE": 1,
"VALOR": "140.00",
"DESCONTO": "30.00",
"LIQUIDO": "110.00",
"COR": 1806,
"CODIGOBARRA": "0203000100027",
"DESCRICAO": "CAMPESI L1701 SAPATO FEMININO",
"TOTAL": "110.00",
"ITEM": "1",
"UNIDADE": "1",
"TIPO": "VD",
"MOTIVO": ""},
{"LOJA": 999,
"PRODUTO": "2030001",
"TAMANHO": "35",
"QUANTIDADE": 1,
"VALOR": "140.00",
"DESCONTO": "0",
"LIQUIDO": "140.00",
"COR": 1805,
"CODIGOBARRA": "0203000100026",
"DESCRICAO": "CAMPESI L1701 SAPATO FEMININO",
"TOTAL": "140.00",
"ITEM": "1",
"UNIDADE": "1",
"TIPO": "VD",
"MOTIVO": ""}
]
}}


Preciso transformar isso em objeto, para fazer os insert's no banco, será que alguém pode me dar uma luz? Estou utilizando o Delphi XE 10. Dei uma olhada no forum, mas nada está funcioando.

:/
Rubens Filho

Rubens Filho

Responder

Post mais votado

06/12/2016

Boa noite,
Ante-mão para fazer a deserialização desse JSOn vc deve ter um objeto com as mesmas propriedades que o mesmo. Você já esta de posse dessa classe?
De posse dessa classe uma solução é o uso do TJson.JsonToObject<TSuaClasse>(SeuJSON);

Espero ter ajudado.

Att Gutierry Antonio

Gutierry Pereira

Gutierry Pereira
Responder

Gostei + 1

Mais Posts

06/12/2016

Rubens Filho

Buenas Gutierry Antonio!!


Sim, tenho as classes que representam os objetos, mas ai que vem o problema, a classe é prevenda, com suas propriedades, até ai blz!! Mas, na prevenda, tenho uma propriedade produtos, que é um ObjectList de produto, e é exatamente esse objectlist que não consigo popular com os dados do json.

Ao que parece, a função TJson.JsonToObject<TSuaClasse>(SeuJSON), trabalha apenas com objetos simples...



Att,
Responder

Gostei + 0

07/12/2016

Gutierry Pereira

Boa noite meu caro,
pode criar um metodo wrap na sua classe principal e ela percorrer sua lista no json e deseralizar os subobjetos.
Responder

Gostei + 0

07/12/2016

Rubens Filho

Gutierry, poderia dar mais detalhes? Esse termo é novo para mim. Na vdd nem faço ideia do que seria isso.


;)
Responder

Gostei + 0

07/12/2016

Gutierry Pereira

Heeheh, de boa..
No seu caso nem seria bem o wrap e sim um wrapping. Que o wrap(embrulhar) é o "nome" que se da para o metodo que vai fazer tranfomar se elemento em um DTO(Data transfer object) para a serialização. Mas ve pode dar qualquer nome a esse metodo, no delphi é muito comum o uso do assign para isso :D.
e o wrapping(desembrulhar) hahahah, seria o metodo que deserializaria, que pegaria e faria o oposto, pegar o DTO e desempacotar no objeto.
Assim você pode criar um metodo assign em sua classe, e esse metodo recebendo um JSON por parametro onde ele percorre o json e retorna seu objeto. Se desejar esse metodo pode ser estatico, assim esse metodo não só iria atribuir os valores do json para a classe como iria criar, atribuir e retornar o objeto atribuido.
Mas o mais legivel seria esse metodo não se estatico ai teria algo assim.
var
  meuObjeto : TMinhaClasse;
begin
  meuObjeto :=MinhaClasse.create();
  meuObjeto.assign(MeuJSON)
end;


Uma outr solução seria o metodo create recber esse json e no create você acionar o metodo de assign

var
  meuObjeto : TMinhaClasse;
begin
  meuObjeto :=MinhaClasse.create(MeuJSON);
end;


:D

qualquer coisa estou a disposição.

Abraços..
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar