JSON erro ao gerar conjunto de pares
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
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
Curtidas 0
Respostas
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
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
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"}]
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