Json - Erro ao deserializar json em uma lista de objetos
Bom dia Pessoal, fiz um método que recebe um json e transforma ele numa lista de objetos, porém ocorre um erro quando os objeto do json possui um atributo do tipo TList. Estou usando delphi XE6 com REST. Segue abaixo a função:
Json:
Chamada da função:
Ocorre esse erro:
[img:descricao=Mensagem de erro]http://arquivo.devmedia.com.br/forum/imagem/437007-20150729-173834.jpg[/img]
function THelper.JsonListObjeto(jsonString: String; classe: TClass): TList<TObject>;
var lista:Tlist<TObject>;
jo: TJSONObject;
obj: TObject;
jl: TJSONArray;
i:integer;
unMarshal: TJSONUnMarshal;
begin
lista := TList<TObject>.Create;
jo := TJSONObject.Create;
obj := TObject.Create;
jl := TJSONArray.Create;
unMarshal := TJSONUnMarshal.Create;
jl := TJSONObject.ParseJSONValue(jsonString) as TJsonArray;
if Assigned(jl) then
begin
for i := 0 to jl.Count -1 do
begin
jo := jl.Items[i] as TJSONObject;
obj:= unMarshal.CreateObject(classe,jo);
lista.Add(obj);
end;
end;
result := lista;
end;
Json:
[
{
"kitVenda": null,
"estDisp": 14,
"estMax": 0,
"custoMedio": 18.572,
"descricao": "PRODUTO DE TESTE",
"codigo": "194354",
"codigosBarra": null,
"precoVenda": 52.5,
"estMin": 0,
"familia": {
"codFamilia": "",
"descFamilia": ""
},
"unidadeMedida": {
"abrevUnidade": "",
"codUnidade": 0,
"descUnidade": ""
},
"id": 0,
"localizacao": "",
"promocaoProd": null,
"numerosSerie": [
{
"serial": "BE456466457897845645"
},
{
"serial": "BE45645567878978944"
},
{
"serial": "BE79794463131311344"
},
{
"serial": "BE78978978944644445"
},
{
"serial": "BE99998989444641116"
},
{
"serial": "12312313131"
},
{
"serial": "4544469797979797"
}
],
"prodBalanca": "F",
"precoPrazo": 0,
"marca": {
"codMarca": "002",
"descMarca": "SUVINIL"
},
"codigoNcm": {
"percTribEst": 0,
"percTribFed": 0,
"percTribMun": 0,
"codNcm": "",
"descNcm": ""
},
"tipoProduto": "tpProduto",
"grupo": {
"codGrupo": "017",
"descGrupo": "Diversos"
},
"diasVencimento": 0,
"codAnp": "",
"tributacao": {
"icms": {
"id": 0,
"aliquota": 0,
"baseCalc": 0
},
"id": 0,
"iss": {
"id": 0,
"aliquota": 2,
"percBase": 100
},
"pis": {
"id": 4,
"aliquota": 1.65,
"cst": "50"
},
"cofins": {
"id": 6,
"aliquota": 7.6,
"cst": "50"
}
}
}
]Chamada da função:
procedure TformPrincipal.recebeProduto;
var listaProduto:TList<TProduto>;
produto:TProduto;
helper:THelper;
i:Integer;
daoProduto:TDaoProduto;
jsonString:String;
begin
listaProduto := TList<TProduto>.create;
produto:= TProduto.Create;
daoProduto := TDaoProduto.Create;
jsonString := memo1.Lines.Text;
listaProduto := TList<TProduto>(helper.JsonListObjeto(jsonString,TProduto));
for i := 0 to listaProduto.Count-1 do
begin
produto := listaProduto.Items[i];
daoProduto.save(produto);
end;
end;Ocorre esse erro:
[img:descricao=Mensagem de erro]http://arquivo.devmedia.com.br/forum/imagem/437007-20150729-173834.jpg[/img]
Danilo Pereira
Curtidas 0