JSON erro ao gerar conjunto de pares

Delphi

21/02/2014

Estou com dúvida para fazer um exemplo JSON como abaixo
EU criei essa função para me retornar uma lista de 3 descrições de produtos diferentes.
Fiz a função abaixo, porém ele me cria um array vazio no JSON.

function TSM.Banco: TJsonArray;
var
jo:TJsonObject;
begin
Result:=TJsonArray.Create;

jo:=TJSONObject.Create;
jo.AddPair('DESCRICAO','TESTE 1');
result.AddElement(jo);

jo:=TJSONObject.Create;
jo.AddPair('DESCRICAO','TESTE 2');
result.AddElement(jo);

jo:=TJSONObject.Create;
jo.AddPair('DESCRICAO','TESTE 3');
result.AddElement(jo);
end;

Retorno obtido:
{"result":[[{"DESCRICAO":"TESTE 1"},{"DESCRICAO":"TESTE 2"},{"DESCRICAO":"TESTE 3"}]]}

Veja que ele criou dois colchetes deveria somente haver um o resultado correto deveria ser:

{"result":[{"DESCRICAO":"TESTE 1"},{"DESCRICAO":"TESTE 2"},{"DESCRICAO":"TESTE 3"}]}

O que está errado com a minha função?

Grato
Roberto
Roberto Oliveira

Roberto Oliveira

Curtidas 0

Respostas

Marco Salles

Marco Salles

21/02/2014

Não vou lhe ajudar não , apenas dizer que isto não acontece somente com vc

Ja verifiquei isto desde 2010 . Nunca tive repostas

O que fiz e faço e tirar na mão grande esse [ que esta sobrando

[]sds


Editado

Me parece que tem uma luz no final do túnel utilizando o GetInvocationMetadata da Uses Data.DBXPlatform

GOSTEI 0
Roberto Oliveira

Roberto Oliveira

21/02/2014

Valeu Marco!
O código final ficou:

function TSM.Banco: TJsonArray;
var
jo:TJsonObject;
begin
result:=TJsonArray.Create;
jo:=TJSONObject.Create;
jo.AddPair('DESCRICAO','TESTE 1');
result.AddElement(jo);

jo:=TJSONObject.Create;
jo.AddPair('DESCRICAO','TESTE 2');
result.AddElement(jo);

jo:=TJSONObject.Create;
jo.AddPair('DESCRICAO','TESTE 3');
result.AddElement(jo);
GetInvocationMetadata().ResponseCode := 200;
GetInvocationMetadata().ResponseContent := result.ToString;
end;


O resultado obtido foi:

[{"DESCRICAO":"TESTE 1"},{"DESCRICAO":"TESTE 2"},{"DESCRICAO":"TESTE 3"}]
GOSTEI 0
POSTAR