pegar valor de retorno (string) no formato json

31/05/2017

0

Bom dia,

Eu tenho um retorno do JSON que está em uma variavel String e quero pegar o value dele....
Esse é o meu JSON

{"error":{"code":400,"message":{"lang":"en-us","value":"Bad request: Error in parameter n_serie:Attribute \\"n_serie\\" not found in pedido_venda.inclui"}}}


quero só pegar a informação do value;
Robson Morais

Robson Morais

Responder

Post mais votado

31/05/2017

Teste seu código assim:

var
  jsonObj, jSubObj: TJSONObject;
  jv: TJSONValue;
begin
  jsonObj := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(Memo1.Text), 0)
    as TJSONObject;

  Memo1.Lines.Clear;

  jv := jsonobj.Get('error').JsonValue;
  jsubObj := jv as TJSONObject;

  jv := jsubObj.Get('message').JsonValue;
  jsubObj := jv as TJSONObject;

  jv := jsubObj.Get('value').JsonValue;

  ShowMessage(jv.Value);
end;

Natanael Ferreira

Natanael Ferreira
Responder

Mais Posts

31/05/2017

Robson Morais

tentei fazer dessa maneira;

procedure TfrmPSyncBack.Button1Click(Sender: TObject);
var
 jsonObj, jSubObj: TJSONObject;
 ja: TJSONArray;
 jp, jSubPar: TJSONPair;
 i, j: integer;
begin
   jsonObj := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(Memo1.Text), 0) as TJSONObject;
//dada a seguinte string em notação JSON que será convertida pela função ParseJSONValue
//em um objeto nativo do delphi do tipo TJSONObject

   Memo1.Lines.Clear;


   jp := TJSONPair.Create;
   jp := jsonObj.Get(0);  //pega o par zero

   ja := TJSONArray.Create;
   ja := (jp.JsonValue as TJSONArray); // do par zero pega o valor, que é array
//quantidade de pares do objeto
   Memo1.Lines.Add('quantidade de elementos ' +   IntToStr(ja.Size));
   jSubObj:= TJSONObject.Create;
   jSubPar := TJSONPair.Create;

   for i := 0 to ja.Size - 1 do //itera o array para pegar cada elemento
   begin
      jSubObj := (ja.Get(i) as TJSONObject); //pega cada elemento do array, onde cada
//elemento é um objeto, neste caso, em função da string JSON montada acima
      Memo1.Lines.Add('');
      Memo1.Lines.Add('No elemento ' + IntToStr(i) +
' a quantidade de pares do objeto é = ' +  IntToStr(jSubObj.Size) ); //quantidade de pares do objeto
      for j := 0 to jSubObj.Size - 1 do  //itera o objeto para pegar cada par
      begin
         jSubPar := jSubObj.Get(j);  //pega o par no índice j
 //do par pega separado a chave e o valor usando Value
         Memo1.Lines.Add(jSubPar.JsonString.Value + ' : ' + jSubPar.JsonValue.Value);
      end;
   end;
end;


mas no ja := (jp.JsonValue as TJSONArray); eu tenho esse erro

First chance exception at $73F4A9F2. Exception class EInvalidCast with message 'Invalid class typecast'. 
Responder

31/05/2017

Robson Morais

show de bola, vlw....
Responder

21/10/2020

Flavio Almeida

Boa noite, pessoal!

Tenho um Json que no retorno de um campo Data ele traz um inteiro, por exemplo: O campo na tabela é 10/08/2003 ele retorna 37843. Tem como eu fazer ele retornar no formato de Data mesmo?

Desde já, agradeço a ajuda de todos.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar