Recoger valor JSON desde un petición


Guest

Hola.
Estoy haciendo las primeras pruebas con AppBuilder, así que es posible que esta consulta sea muy básica.

Estoy realizando una aplicación nueva utilizando un HttpClient.
Está configurado con esta dirección:

http://api.openweathermap.org/data/2.5/find?&q=Barcelona,es&lang=es&units=metric&APPID=278857e8dee51f914026df21d0d40c19

Si accedéis, veréis que devuelve un texto en formato JSON.

Intento recoger esa respuesta un un TextArea utilizando una asignación como esta:

SetVar "[Textarea1.Value]" "[HttpClient1.Response]" "String"

pero lo que obtengo es que en el TextArea aparece: [object Object]

¿Qué estoy haciendo mal?

Gracias.


decsoft

Hola Neftalí,

Un gusto verte también en este foro. No te preocupes que no estás haciendo nada mal. Se trata de que lo que obtenemos en la variable "[HttpClient1.Response]", en este caso, es el propio objeto JSON retornado por el servidor, y, lo que vemos en el Textarea es el resultado del método "toString()" de dicho objeto.

Podemos acceder, directamente, al propio objeto, es decir, podemos escribir algo como esto en el caso del objeto JSON susomentado:

Para una respuesta del servidor tal que esta:

... la acción AlertBox anterior nos mostraría "accurate". Por otro lado, el JSON que nos ocupa es mas o menos "complejo", esto es, el elemento "list" es un Array de objetos, en este caso de un solo objeto. Podríamos también acceder a las propiedades de los objetos de "list" usando un codigo como este:

La acción "AlertBox" anterior mostrará "Barcelona". Y, no sé si es necesario, pero, en el caso de que "list" pudiese contener mas de un objeto, podemos conocer el número de estos usando la acción ArrayLength de este modo:

Por lo demás, puesto que lo que obtenemos desde el servidor es para nuestra aplicación un objeto JSON, si quisiésemos mostrar en el Textarea el JSON "como una cadena", podemos usar la acción StrSerialize tal que así:

No sé si te he aclarado algo Neftalí.

Muchas gracias por interesarte en App Builder.

Si tienes cualquier otra duda no dejes de decirlo.



Guest

...puesto que lo que obtenemos desde el servidor es para nuestra aplicación un objeto JSON, si quisiésemos mostrar en el Textarea el JSON "como una cadena", podemos usar la acción StrSerialize tal que así:

No sé si te he aclarado algo Neftalí.

Hola David.

Pues básicicamente esso era lo que estaba intentando y ya me lo has aclarado.
Lo siguiente es "parsear" algunos elementdos del JSON, así que probaré con lo que me has comentado más arriba.

Gracias.


decsoft

Hola Neftalí,

Estupendo. Recuerda que no tendrás que "parsear", en el sentido de que ya tratamos, directamente, con un objeto y sus propiedades. Si tienes cualquier consulta no dejes de decirlo.



decsoft

Hola de nuevo,

Sólo para añadir que App Builder cuenta ahora con dos ejemplos nuevos: JSON y JSON2. El primero muestra cómo acceder a la respuesta JSON de un cliente HTTP tal que cualquier otro objeto. El segundo muestra lo mismo, pero, esta vez la respuesta JSON contiene varios objetos y además cada objeto tiene una propiedad de tipo Array.

Los ejemplos de App Builder se encuentran en el menú Archivo -> Ejemplos



Guest

Gracias David.

Es justo lo que pretendo hacer, sólo que las respuestas son algo complejas (bueno, la que has visto en el ejemplo anterior).
Una vez obtenida la respuesta, lo más complejo será posiblemente realizar el "parseo" para obtener los valores.

Un saludo.


decsoft

Hola Neftalí,

Revisa los ejemplos JSON y JSON2 que se han añadido, y, si tienes cualquier duda, no dejes de preguntar. :)


Everybody can read the DecSoft support forum for learning purposes, however only DecSoft customers can post new threads. Purchase one or more licenses of some DecSoft products in order to give this and other benefits.

This website uses some useful cookies to store your preferences.

I agree. Hide this note. Give me more information.