Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Delphi para la web
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-08-2020
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 13
tiqui_loquito Va por buen camino
Doy respuesta a lo que necesitaba

Bueno, me puse a cacharrear un rato y aquí lo hice

Si hay una manera más optima de hacerlo, se los agradecería.

Por si a alguien le sirve.

Delphi 10.3 community edition
Dos memos y dos botones en el formulario


Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,System.JSON, sYSTEM.JSON.Types,
  System.JSON.Writers,System.JSON.Builders;

type


  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ParseJSonValue;

  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  StringWriter:TStringWriter;
  Writer:TJsonTextWriter;
  Builder : TJSONObjectBuilder;
  LJsonResponse: TJSONObject;

begin
  Memo1.Lines.Clear;

  StringWriter := TStringWriter.Create();
  writer := TJsonTextWriter.Create(StringWriter);
  Builder := TJSONObjectBuilder.Create(Writer);

  try
    Writer.Formatting := TJsonFormatting.Indented;

   Builder
      .BeginObject
        .Add('Estado','Error')
        .Add('Mensaje','La información del token no fue enviada correctamente.')
        .Add('Entorno','3')
        .Add('Errores','4')
        .Add('XmlBase64','5')
        .Add('message','6')
      .EndObject;

      Memo1.Lines.Add(StringWriter.ToString);

  finally

  end;
end;

procedure TForm1.Button2Click(Sender: TObject);

begin


   ParseJSonValue

end;



procedure TForm1.ParseJSonValue;
procedure ParseJson;
var
  LJsonObj  : TJSONObject;
  LJPair    : TJSONPair;
  LProducts : TJSONValue;
  LProduct  : TJSONValue;
  LProduct1  : TJSONValue;
  LItem     : TJSONValue;
  LIndex    : Integer;
  LSize     : Integer;
begin
    LJsonObj    := TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
  try
     LSize:= TJSONArray(LJsonObj).Size;
     for LIndex:=0 to LSize-1 do
     begin

      LProduct := TJSONArray(LJsonObj.Get(LIndex).JsonValue);
      LProduct1 := TJSONArray(LJsonObj.Get(LIndex).JsonString);

      LJPair   := TJSONPair(LProduct);
      Memo2.Lines.Add(StringReplace(LProduct1.ToString,'"','',[rfReplaceAll]));
      Memo2.Lines.Add(StringReplace(LJPair.ToString,'"','',[rfReplaceAll]));

     end;
  finally
     LJsonObj.Free;
  end;
end;

begin

    ParseJson;


end;

end.
Responder Con Cita
  #2  
Antiguo 05-08-2020
(MAJ) (MAJ) is offline
Miembro
 
Registrado: abr 2007
Posts: 71
Poder: 20
(MAJ) Va por buen camino
Buenas compañero

Cita:

Lo que necesito es leer el JSON y sacar las claves, dependieno al nombre ya puedo entrar a tomar el valor que necesito, ya que no puedo obtener la clave Estado cuando la clave puede ser Mensaje y ahí obtengo error.

se me ocurre algo así



Código Delphi [-]
  procedure ParseJSON;
var

JObject: TJsonObject;
JEstado: TJValue;
JCode: TJValue;
JMessage: TJValue

begin
  JObject:= TJSONObject.ParseJSONValue(Memo1.text) as TJSONObject;
  

  JEstado:= JObject.FindValue('estado');
  JMessage:= JObject.FindValue('message');



  if Assigned(JEstado) then
  begin

    Memo2.Text:= JEstado.Value' - '+JMessage.Value
  end;

 else
   begin
     JCode:= JObject.FindValue('code');
     if Assigned(JCode) then
     begin
       Memo2.Text:= JCode.Value' - '+JMessage.Value;
     end;

   end;
end;


espero que te sirva, no se si es lo mejor pero creo que puede servirte
__________________
Código Delphi [-]
//Inserte una firma aquí...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener json de una URL Soa Pelaez Varios 7 26-02-2020 23:17:55
Obtener latitud y longitud JSON google API Alceo Internet 4 03-04-2017 23:49:48
Obtener elementos únicos en Combobox maxzama Varios 3 30-01-2015 19:59:52
Problema Al Obtener Elementos En Combobox Ignacio Gentile OOP 4 29-06-2011 17:41:03
Obtener lista de elementos de un form aom PHP 16 28-05-2003 09:52:49


La franja horaria es GMT +2. Ahora son las 02:27:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi