Help JSON Delphi

4

Good afternoon!

Could you help me read this JSON file in Delphi. I have already tried numerous classes, including the Delphi native, and I was able to read only the data from the first node, such as status. I use the Delphi XE6 version.

{  
   "erro":{  
      "status":400,
      "tipo":"requisicao",
      "causas":[  
         {  
            "codigo":"4210BC95",
            "mensagem":"Banco Caixa Econômica Federal - Campo (boleto.conta.convenio) - O formato do convênio é de até 7 dígitos (6  dígitos + dígito verificador) e deve ser (dddddd-d), onde (d) = numérico, representa um dígito numérico de zero a n ove, mas o informado foi (65).",
        "suporte":"http://www.boletocloud.com/app/dev/api"
     },
     {  
        "codigo":"980D273F",
        "mensagem":"Banco Caixa Econômica Federal - Campo (boleto.conta.agencia) - O formato da agência de 4 dígitos deve ser (dddd), mínimo 1 dígito e máximo 4 dígitos, onde (d) = numérico, representa um dígito numérico de zero a nove, mas o informado foi (45125).",
           "suporte":"http://www.boletocloud.com/app/dev/api"
         }
     ]
   }
}
    
asked by anonymous 09.12.2016 / 18:41

1 answer

3

I created a project as an example. I used Delphi Seattle but I believe it works on X6 as well. See below:

Add in uses :

System.JSON

Add a TMemo and put the JSON text that you passed in your question into it. Add TButton and put the code below in OnClick

procedure TForm1.Button1Click(Sender: TObject);
var
    JSonObjectAsString: string;
    JSObj             : TJSONObject;
    JSArray           : TJSONArray;
    JSValue           : TJSONValue;
begin
    JSonObjectAsString := Memo1.Text;

    JSObj := TJSONObject.ParseJSONValue(JSonObjectAsString) as TJSONObject;
    try
        // Erro
        Memo1.Lines.Add(JSObj.GetValue('erro').ToJSON);
        // Status
        Memo1.Lines.Add((JSObj.GetValue('erro') as TJSONObject).GetValue('status').ToJSON);
        // tipo
        Memo1.Lines.Add((JSObj.GetValue('erro') as TJSONObject).GetValue('tipo').ToJSON);
        // causas
        JSArray := (JSObj.GetValue('erro') as TJSONObject).GetValue('causas') as TJSONArray;
        for JSValue in JSArray do
        begin
            // código
            Memo1.Lines.Add((JSValue as TJSONObject).GetValue('codigo').ToJSON);
            // mensagem
            Memo1.Lines.Add((JSValue as TJSONObject).GetValue('mensagem').ToJSON);
            // suporte
            Memo1.Lines.Add((JSValue as TJSONObject).GetValue('suporte').ToJSON);
        end;
    finally
        JSObj.DisposeOf;
    end;
end;
    
09.12.2016 / 19:19