|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

30B.- JSON.
- Tutoriales. JSON.

- Presentación.

(Este tutorial es una ampliación del apartado anterior Base de datos MySQL)

JSON es un tipo de formato de texto que se utiliza en la comunicación entre un programa y una web.

Es parecido a XML pero más simplificado.

Un ejemplo sería enviar una petición a través de web a una base de datos mediante un script php
y que nos respondiera (print json_encode($rows); enviándonos información, esa información viene en formato JSON.

Para estudiar el formato JSON vamos a basarnos en el tutorial de la Base de datos MySQL visto anteriormente.

Aunque podemos ver la "Respuesta del servidor" mediante el Log, vamos a verlo mejor con un Label.

Vamos a aumentar la altura del ListView1 y situar un Label3 en el Designer, como indico en el dibujo de la izquierda.


Además vamos a añadir Label3.Text = res en este trozo de código.

' Esta es la Respuesta de la orden hc.Execute
Sub hc_ResponseSuccess (Response As HttpResponse, tarea As Int)
Dim res As String
res = Response.GetString("UTF8")
Log("Respuesta del servidor: " & res)
Label3.text = res
Dim parser As JSONParser
parser.Initialize(res)

Select tarea

' ************* PAISES *****************
Case paises
' Añade paises la ListView1
Dim countries As List
countries.Initialize
countries = parser.NextArray
For
i = 0 To countries.Size - 1
Dim
m As Map
m = countries.Get(i)
Dim Renglon As Renglones
Renglon.Renglon1 = m.Get("ID") ' ES
Renglon.Renglon2 = m.Get("nombre") ' España
ListView1.AddTwoLines2(Renglon.Renglon1, Renglon.Renglon2, Renglon)
Next
ProgressDialogHide

Observaremos que al obtener la respuesta del servidor mediante el archivo paises.php (print json_encode($rows);)
me envía estos datos, con este formato JSON (he reubicado las líneas):

[
{"nombre":"Bolivia","ID":"BO"},
{"nombre":"Colombia","ID":"CO"},
{"nombre":"Costa Rica","ID":"CR"},
{"nombre":"Cuba","ID":"CU"},
{"nombre":"Guatemala","ID":"GU"},
{"nombre":"Paraguay","ID":"PA"},
{"nombre":"Venezuela","ID":"VE"}
]

 

Estos datos han sido enviados gracias a la línea...

print json_encode($rows);

... del archivo paises.php. La información ha sido enviada condificada en json.

Copiando y pegando esos datos en esta web: http://json.bloople.net/ podemos verlo en un formato HTML.

_____________________________________________________________________
_____________________________________________________________________

parser (descodificar, cambiar, convertir)

 

Una vez recibidos los datos en JSON, vamos a ver cómo podemos trabajar con ellos.

Para ello establecemos una variable llamada parser, mediante ella se convertirá la información JSON en otro tipo de formato gracias a la librería JSON.

Dim parser As JSONParser
parser.Initialize(res)

 

- En el mismo trozo de código visto anteriormente vamos a cambiar la línea de Label3.Text

' Esta es la Respuesta de la orden hc.Execute
Sub hc_ResponseSuccess (Response As HttpResponse, tarea As Int)
Dim res As String
res = Response.GetString("UTF8")
Log("Respuesta del servidor: " & res)
' Label3.text = res
Dim parser As JSONParser
parser.Initialize(res)

Select tarea

' ************* PAISES *****************
Case paises
' Añade paises la ListView1
Dim countries As List
countries.Initialize
countries = parser.NextArray
Label3.text = countries
For
i = 0 To countries.Size - 1
Dim
m As Map
m = countries.Get(i)
Dim Renglon As Renglones
Renglon.Renglon1 = m.Get("ID") ' ES
Renglon.Renglon2 = m.Get("nombre") ' España
ListView1.AddTwoLines2(Renglon.Renglon1, Renglon.Renglon2, Renglon)
Next
ProgressDialogHide

 

[
{ID=BO, nombre=Bolivia},
{ID=CO, nombre=Colombia},
{ID=CR, nombre=Costa Rica},
{ID=CU, nombre=Cuba},
{ID=GU, nombre=Guatemala},
{ID=PA, nombre=Paraguay},
{ID=VE, nombre=Venezuela}
]

Ahora observamos como ha cambiado (parser) de un formato a otro.

Una vez puesto en este otro formato.
- Se crea una variable Map (es como una línea de la base de datos, como un registro que contiene una línea de datos).
- Se va tomando información línea a línea (NextArray).
- Y asignando cada línea a las distintas partes del Map m = countries.Get(i)
- Luego cada campo se introduce en un Renglon.

countries = parser.NextArray
Label3.text = countries
For
i = 0 To countries.Size - 1
Dim
m As Map
m = countries.Get(i)
Dim Renglon As Renglones
Renglon.Renglon1 = m.Get("ID") ' ES
Renglon.Renglon2 = m.Get("nombre") ' España
ListView1.AddTwoLines2(Renglon.Renglon1, Renglon.Renglon2, Renglon)
Next

En el tutorial List, Type y Map se explica la forma de utilizar estos tres elementos.

________________________________________________

Es importante tener unos conocimientos básicos en JSON porque es una forma de formato de información muy utilizada en la web con aplicaciones.

Puedes obtener más información sobre el formato JSON en el tutorial oficial de Basic4Android.

También en su Librería JSON.

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información