Fórum JSON erro ao gerar conjunto de pares #470896

21/02/2014

0

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

Responder

Posts

22/02/2014

Marco Salles

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

Responder

Gostei + 0

23/02/2014

Roberto Oliveira

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"}]
Responder

Gostei + 0

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

Aceitar