Ver Mensaje Individual
  #8  
Antiguo 25-09-2015
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Reputación: 18
pnsd_89 Va por buen camino
Que bueno El poder haber encontrado este post. Me ha sido de gran Ayuda.
Tenia el mismo Problema no sabia ni entendía la estructura JSON y mucho menos sabia como realizar la lectura de uno en Delphi. Muchisimas gracias Neftali uno de mis grandes maestros de Delphi(desde 2007 a través de este foro ).

Luego de haber dicho esto quisiera presentar un problema, la lectura de mi JSON lo e podido realizar sin problema alguno, pero al igual que al archivo JSON de ejemplo adjunto por ustedes. Mi archivo también tiene un Array de objetos osea que comienza de y termina todo el archivo de esta manera [].

Al codigo de facilito Neftali le he agregado un ciclo para asi poder recorrer todos mis objetos
Código Delphi [-]
objResp := TlkJSONobject.Create();
  try
    // Parsear el texto completo JSON (está en un memo)
    TlkJSONbase(objResp) := TlkJSON.ParseText(Memo1.Text);
    // Obtener el contenido del primer elemento ya que el raiz está dentro de [ ]
   for i := 0 to (objResp.Count - 1) do
    begin    
       TlkJSONbase(objResp) := objResp.Child[i];
    ...
    ...
    ...

La primera vez que hace la pasada osea cuando i = 0 la captura de los datos me hace perfectamente, pero cuando pasa por segunda vez osea que i = 1 el valor inicial b (solo que en mi caso b es string y no boolean) no captura y me dispara una misterioso y siniestro error de acces violation.
Que estoy haciendo mal? Tengo que liberar el objeto objResp....................
Soy un reverendo idiota jajajaja al terminar de escribir esta pregunta me he auto respondido jajajaja
Me voy a auto responder para que si alguno tiene el mismo problema lo resuelva. El código de neftali hace lo siguiente.
Código Delphi [-]
TlkJSONbase(objResp) := objResp.Child[0];
Lo que hace que objResp se convierta en un objeto unico y pierda los datos de los demas indices del arreglo por ende cuando busca ese indice en esa variable de tipo objeto ya no la encuentra y lanza el error de memoria XD XD XD enserio me causa mucha gracia estar respondiendome yo solo por que hace ya unas cuantas horas que pierdo tratando de resolverlo y creo que escribir el problema me ayudo a pensar bien en la solucion. jajaja Saludos
Lo que hare es declarar otra variable de tipo objeto para seguir manteniendo los valores en los indices de objResp.
Responder Con Cita