Академический Документы
Профессиональный Документы
Культура Документы
JSON EN ANDROID
2014
CHIMBOTE PER
JSON EN ANDROID
NDICE
NDICE .......................................................................................................................................... 1
JSON en Android .......................................................................................................................... 2
1.
Qu es JSON? ..................................................................................................................... 2
2.
3.
Mtodos JSON...................................................................................................................... 2
4.
5.
6.
Bibliografa ................................................................................................................................. 49
JSON EN ANDROID
JSON en Android
1. Qu es JSON?
Es el acrnimo en ingls de JavaScript Object Notation, es un formato ligero para el
intercambio de datos en aplicaciones web. JSON tiene la ventaja de que no requiere el
uso de XML. (Sacristn, 2012)
JSON (JavaScript Object Notation) es un formato de intercambio de datos ligero. Es fcil
para los seres humanos a leer y escribir. Es fcil para las mquinas para analizar y
generar. Se basa en un subconjunto del lenguaje de programacin JavaScript, estndar
ECMA-262 3rd Edition -. 12 1999 JSON es un formato de texto que es completamente
independiente del lenguaje pero utiliza convenciones que son familiares para los
programadores de la C-familia de lenguajes, incluyendo C, C + +, C #, Java, JavaScript,
Perl, Python, y muchos otros. Estas propiedades hacen de JSON un lenguaje ideal-el
intercambio de datos.
2. Valores JSON
Los tipos de valores en JSON son los siguientes:
Un string (entre comillas simples)
Un nmero (entero o float)
Un booleano (true o false)
Un objeto (entre llaves {} )
Un array (entre corchetes [] )
Null
3. Mtodos JSON
get (String name): Devuelve el valor en la forma de tipo Object.
getInt (String name): Devuelve el valor entero especificado por la clave.
getLong (String name): Devuelve valor entero largo especificado por la clave.
getDouble (String name): Devuelve el valor doble especificado por la clave.
getString (String name): Devuelve el valor en la forma de tipo String.
getBoolean (String name): Devuelve el valor booleano especificado por la clave.
length(): Devuelve el nmero de asignaciones de nombre / valor en este objeto.
JSON EN ANDROID
JSON EN ANDROID
Clic en siguiente:
JSON EN ANDROID
JSON EN ANDROID
1.2)
JSON EN ANDROID
TextView
ID: tvTitulo
ID: tvCodigo
ID: tvLibro
ID: tvAutor
EditText
ID: etCodigo
ID: etNombre
ID: etAutor
ID: tvAlerta
ID: tvMostrar
ID: tvResultado
Aqu va un TextView, pero sin texto
Button
ID: btnAgregar
ID: btnNuevo
ID: btnQuitar
package com.usp.jsoncadena;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import
import
import
import
import
import
import
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.TextView;
JSON EN ANDROID
JSON EN ANDROID
JSON EN ANDROID
4.2) Realizar la siguiente configuracin (de ejemplo) para el dispositivo y hacer clic en el
botn OK
10
JSON EN ANDROID
4.4)
11
JSON EN ANDROID
Arrastrar hacia
arriba para activar
12
4.6)
JSON EN ANDROID
Ejecutar la aplicacin:
13
JSON EN ANDROID
lib.LibroID,
lib.Titulo,
aut.Nombre AS [Autor],
lib.Anio,
lib.Precio
FROM
Libros lib
INNER JOIN Autor aut
ON lib.AutorID = aut.AutorID
INNER JOIN Editorial ed
ON lib.EditorialID = ed.EditorialID
WHERE
ed.EditorialID = @EditorialID
END
GO
14
JSON EN ANDROID
ed.EditorialID,
ed.Nombre
FROM
Editorial ed
END
Nuevo Proyecto.
15
JSON EN ANDROID
2.2)
16
2.3)
using
using
using
using
System.Data;
System.Data.SqlClient;
System.Text;
System.Web.Services;
JSON EN ANDROID
namespace ProyectoJSON
{
/// <summary>
/// Descripcin breve de WServiceJSON
/// </summary>
[WebService(Namespace = "http://usp.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio Web desde un script,
// usando ASP.NET AJAX, quite la marca de comentario de la lnea siguiente.
// [System.Web.Script.Services.ScriptService]
public class WServiceJSON : WebService
{
// Cdigo para el acceso a datos desde SQL Server:
private const string ConexionString = "Data Source=.;Initial Catalog=LibrosDB;"
+ "Integrated Security=True";
private SqlCommand CreateCommand(string procedureName)
{
var cmd = new SqlCommand(procedureName)
{
Connection = new SqlConnection(ConexionString),
CommandType = CommandType.StoredProcedure
};
return cmd;
}
// Mtodo para listar editoriales:
[WebMethod]
public string ListaEditoriales()
{
StringBuilder json = new StringBuilder();
SqlCommand cmd = CreateCommand("Pa_ListaEditoriales");
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
json.Append("{\"Editoriales\":[");
int count = 0;
while (dr.Read())
{
json.AppendFormat("{{\"EditorialID\":\"{0}\",\"Nombre\":\"{1}\"}},",
dr["EditorialID"], dr["Nombre"]);
count++;
}
cmd.Connection.Close();
if (count > 0)
json[json.Length - 1] = ']';
17
JSON EN ANDROID
else
json.Append(']');
json.Append('}');
return json.ToString();
}
// Mtodo para listar libros a partir de un codigo de editorial
[WebMethod]
public string ListaLibros(int editorialID)
{
StringBuilder json = new StringBuilder();
SqlCommand cmd = CreateCommand("Pa_ListaLibros");
cmd.Parameters.AddWithValue("editorialID", editorialID);
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
json.Append("{\"Libros\":[");
int count = 0;
while (dr.Read())
{
json.AppendFormat("{{\"Titulo\":\"{0}\"," +
"\"Autor\":\"{1}\"," +
"\"Precio\":\"{2}\"}},",
dr["Titulo"], dr["Autor"], dr["Precio"]);
count++;
}
cmd.Connection.Close();
if (count > 0)
json[json.Length - 1] = ']';
else
json.Append(']');
json.Append('}');
return json.ToString();
}
} // Cierra clase
} // Cierra namespace
18
2.4)
JSON EN ANDROID
19
JSON EN ANDROID
20
2.5)
JSON EN ANDROID
21
JSON EN ANDROID
22
JSON EN ANDROID
3.2)
23
JSON EN ANDROID
24
JSON EN ANDROID
25
JSON EN ANDROID
Figura 34: Aplicacin web en IIS lista para publicar nuestro Web Service en l
26
JSON EN ANDROID
27
JSON EN ANDROID
28
JSON EN ANDROID
29
JSON EN ANDROID
'IIS APPPOOL\JsonAppPool'
USE LibrosDB
EXEC sys.sp_grantdbaccess 'IIS APPPOOL\JsonAppPool'
30
JSON EN ANDROID
Figura 42: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
31
JSON EN ANDROID
Figura 43: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
Figura 44: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
32
JSON EN ANDROID
Figura 45: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
Figura 46: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
33
JSON EN ANDROID
34
JSON EN ANDROID
35
JSON EN ANDROID
6.2)
36
JSON EN ANDROID
37
JSON EN ANDROID
38
JSON EN ANDROID
6.4)
Disear la aplicacin:
39
JSON EN ANDROID
40
JSON EN ANDROID
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingTop="1dp"
android:text="@string/tv_col_titulo"
android:textColor="#356A9F"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_col_autor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:layout_marginRight="1dp"
android:layout_weight="0.4"
android:background="#DBE7F2"
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingTop="1dp"
android:text="@string/tv_col_autor"
android:textColor="#356A9F"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_col_precio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:layout_marginRight="1dp"
android:layout_weight="0.6"
android:background="#DBE7F2"
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingTop="1dp"
android:text="@string/tv_col_precio"
android:textColor="#356A9F"
android:textSize="12sp" />
</TableRow>
</TableLayout>
</LinearLayout>
<ScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" >
<TableLayout
android:id="@+id/tb_libros_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp" >
</TableLayout>
</ScrollView>
</LinearLayout>
41
JSON EN ANDROID
Programar la aplicacin:
Para trabajar en comunicacin con el servicio web creado debemos aadir a la
aplicacin la librera ksoap2, se puede descargar desde: Descargar KSOAP2
package com.usp.demojson;
import java.io.IOException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpResponseException;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
42
JSON EN ANDROID
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableLayout.LayoutParams;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
// Clase MainActivity
public class MainActivity extends Activity {
43
JSON EN ANDROID
if (editorial_count > 0) {
cargarTablaLibros(editorialID_list[pos]);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
};
44
JSON EN ANDROID
// JSON Parsing
JSONObject json_data;
JSONArray precios;
int precios_count;
try {
json_data = new JSONObject(result);
precios = (JSONArray) json_data.get("Libros");
precios_count = precios.length();
if (precios_count > 0) {
try {
int match = LayoutParams.MATCH_PARENT;
int wrap = LayoutParams.WRAP_CONTENT;
// LayoutParams (width, height, weigth);
LayoutParams row_layout = new LayoutParams(match, wrap, 1);
TableRow.LayoutParams layout_det1 = new TableRow.LayoutParams(
wrap, match, 0.4f);
TableRow.LayoutParams layout_det2 = new TableRow.LayoutParams(
wrap, match, 0.3f);
layout_det1.setMargins(0, 0, 1, 1);
layout_det2.setMargins(0, 0, 1, 1);
tb_libros.removeAllViews();
for (int k = 0; k < precios_count; k++) {
JSONObject content = precios.getJSONObject(k);
// Parametros:
TextView txt_det1 = new TextView(MainActivity.this);
TextView txt_det2 = new TextView(MainActivity.this);
TextView txt_det3 = new TextView(MainActivity.this);
txt_det1.setBackgroundColor(Color.WHITE);
txt_det1.setPadding(2, 2, 1, 1);
txt_det1.setText(content.getString("Titulo"));
txt_det1.setTextSize(11f);
txt_det2.setBackgroundColor(Color.WHITE);
txt_det2.setPadding(2, 2, 1, 1);
txt_det2.setText(content.getString("Autor"));
txt_det2.setTextSize(11f);
txt_det3.setBackgroundColor(Color.WHITE);
txt_det3.setPadding(2, 2, 1, 1);
txt_det3.setText(content.getString("Precio"));
txt_det3.setTextSize(11f);
TableRow row_detail = new TableRow(MainActivity.this);
row_detail.addView(txt_det1, layout_det1);
row_detail.addView(txt_det2, layout_det2);
row_detail.addView(txt_det3, layout_det2);
tb_libros.addView(row_detail, row_layout);
}
45
JSON EN ANDROID
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
};
nt.start();
}
46
JSON EN ANDROID
editorial_count = ordenes.length();
if (editorial_count > 0) {
editorialID_list = new int[editorial_count];
editorial_list = new String[editorial_count];
for (int i = 0; i < ordenes.length(); i++) {
JSONObject detail = ordenes.getJSONObject(i);
editorialID_list[i] = detail.getInt("EditorialID");
editorial_list[i] = detail.getString("Nombre");
}
}
} catch (HttpResponseException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (XmlPullParserException ex) {
ex.printStackTrace();
} catch (JSONException ex) {
ex.printStackTrace();
}
// Perform operation:
runOnUiThread(new Runnable() {
@Override
public void run() {
if (editorial_count > 0) {
ArrayAdapter<String> adaptador = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1,
editorial_list);
spin_editorial.setAdapter(adaptador);
} else {
Toast.makeText(_context, "No hay editoriales que mostrar.",
Toast.LENGTH_LONG).show();
}
}
});
}
};
nt.start();
}
47
JSON EN ANDROID
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Figura 59: Ejecucin de nuestra aplicacin que utiliza JSON para recuperar datos desde SQL Server 2012
48
JSON EN ANDROID
Bibliografa
Aydin, M. (2012). Android 4: New Features for Application Development. Birmingham, UK:
Packt Publishing.
Sacristn, C. R. (2012). Programacin en Android.
Link de descarga:
http://1drv.ms/1ofC9p8
49