Android JSONObject - Análisis JSON en Android
Android JSONObject se usa para analizar JSON en aplicaciones de Android. En este tutorial, discutiremos e implementaremos un JSONObject
en nuestra aplicación de Android para analizar datos JSON. JSON significa Notación de objetos de JavaScript.
¿Qué es JSON?
JSON se utiliza para el intercambio de datos (publicación y recuperación) desde el servidor. Por lo tanto, conocer la sintaxis y su usabilidad es importante. JSON es la mejor alternativa para XML y es más legible por humanos. JSON es independiente del lenguaje. Debido a la dependencia del idioma, podemos programar JSON en cualquier idioma (Java/C/C++). Una respuesta JSON del servidor consta de muchos campos. A continuación se proporciona un ejemplo de respuesta/datos JSON. Lo usaremos como referencia y lo implementaremos en nuestra aplicación.
{
"title":"JSONParserTutorial",
"array":[
{
"company":"Google"
},
{
"company":"Facebook"
},
{
"company":"LinkedIn"
},
{
"company" : "Microsoft"
},
{
"company": "Apple"
}
],
"nested":{
"flag": true,
"random_number":1
}
}
Hemos creado una cadena de datos JSON aleatoria desde esta página. Es útil para editar datos JSON. Los datos JSON consisten en 4 componentes principales que se enumeran a continuación:
- Array: un JSONArray está encerrado entre corchetes ([). Contiene un conjunto de objetos
- Objeto: los datos encerrados entre corchetes ({) son un solo JSONObject. Los JSONObjects anidados son posibles y se usan con mucha frecuencia
- Claves: cada JSONObject tiene una cadena de clave que contiene cierto valor
- Valor: cada clave tiene un único valor que puede ser de cualquier tipo cadena, doble, entero, booleano, etc.
Objeto JSON de Android
Crearemos un objeto JSONObject a partir de la cadena de datos JSON estática proporcionada anteriormente y mostraremos el JSONArray en un ListView. Cambiaremos el nombre de la aplicación a la cadena de título en los datos JSON.
Ejemplo de análisis de JSON en Android
Código de análisis JSON de Android
El actividad_principal.xml
se proporciona a continuación.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.journaldev.jsonparsing.MainActivity">
<ListView
android:layout_width="wrap_content"
android:id="@+id/list_view"
android:layout_height="match_parent"/>
</RelativeLayout>
El MainActivity.java
se proporciona a continuación.
package com.journaldev.jsonparsing;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
String json_string = "{\n" +
" \"title\":\"JSONParserTutorial\",\n" +
" \"array\":[\n" +
" {\n" +
" \"company\":\"Google\"\n" +
" },\n" +
" {\n" +
" \"company\":\"Facebook\"\n" +
" },\n" +
" {\n" +
" \"company\":\"LinkedIn\"\n" +
" },\n" +
" {\n" +
" \"company\" : \"Microsoft\"\n" +
" },\n" +
" {\n" +
" \"company\": \"Apple\"\n" +
" }\n" +
" ],\n" +
" \"nested\":{\n" +
" \"flag\": true,\n" +
" \"random_number\":1\n" +
" }\n" +
"}";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
ListView listView = (ListView) findViewById(R.id.list_view);
List<String> items = new ArrayList<>();
JSONObject root = new JSONObject(json_string);
JSONArray array= root.getJSONArray("array");
this.setTitle(root.getString("title"));
for(int i=0;i<array.length();i++)
{
JSONObject object= array.getJSONObject(i);
items.add(object.getString("company"));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
if (listView != null) {
listView.setAdapter(adapter);
}
JSONObject nested= root.getJSONObject("nested");
Log.d("TAG","flag value "+nested.getBoolean("flag"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Hemos iterado a través del objeto JSONArray
y hemos obtenido las cadenas presentes en cada JSONObject
secundario y las hemos agregado a una ArrayList que se muestra en ListView. El nombre de la aplicación se cambia usando:
this.setTitle();
Salida de ejemplo de Android JSONObject
Descargar Android JSON Parsing JSONObject Project
Referencia: Documentación Oficial