Aprende a enviar datos de java a JavaScript con Cordova

En cordova, es posible que deba devolver algunos datos a la vista (no solo cadenas simples). Estos datos se pueden enviar de manera eficiente a la vista con JSON, sin embargo, no crearemos una cadena JSON a partir de una matriz manualmente porque no es una buena práctica.

Para enviar información de java a javascript en cordova con Java android:

Incluya los componentes requeridos

Necesitamos incluir los siguientes componentes en la clase, luego podremos crear matrices y objetos json (si usa el bloque try and catch, debe incluir JSONException).

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

Crear un objeto JSON en Java

En javascript, la creación de un objeto es realmente fácil, solo necesita asignar el nombre de la propiedad a un objeto y listo (con notación de punto o corchetes). Con java también es simple, pero diferente, crearemos una variable con tipo JSONObject y usaremos la función PUT para agregar una clave.

JSONObject item = new JSONObject();
item.put("name", "filename.java");
item.put("filepath","aimaginarypath");
// en javascript esto es algo así como
// {filepath:"aimaginarypath",name:"filename.java"}

el elemento variable contiene claves de nombre y ruta de archivo como un objeto javascript normal.

Creación de una matriz JSON en Java

En javascript, necesitamos llamar a la función push para agregar un elemento a una matriz existente. Con Java es lo mismo, solo que con otro nombre ( agregar ).

JSONArray jsonArray = new JSONArray();
jsonArray.put("item number 1");
jsonArray.put("item number 2");
// en javascript esto es algo como:
// ["item number 1","item number 2"]

Enviando

Para enviar la matriz u objeto, llamaremos al método toString en las variables. aquí hay 2 formas de enviar resultados en cordova (recuerde que callbacks = la variable callbackContext de su clase):

Asincrónico (usando threadPool)

JSONArray jsonArray = new JSONArray();
jsonArray.put("item number 1");

// enviar el JSONArray usando jsonArray.toString();
PluginResult result = new PluginResult(PluginResult.Status.OK, jsonArray.toString());
result.setKeepCallback(true);
callbacks.sendPluginResult(result);

"Sincrono"

JSONObject item = new JSONObject();
item.put("name", "filename.java");

callbacks.success(item.toString());

Entonces solo necesitas analizarlo con Javascript (JSON.parse (jsonstring)), ¡diviértete!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores