Colección de citas famosas - Slogan de motivación - ¿Cómo ve Android el formato de datos json?

¿Cómo ve Android el formato de datos json?

Después de enviar una solicitud al servidor, el servidor devolverá una serie de datos, en la mayoría de los casos en formato XML o JSON. Entonces el análisis JSON es más conveniente que el XML, así que hablemos primero del análisis JSON.

JSON tiene varios formatos de datos básicos:

1. Objeto JSON - Objeto JSON

{ "Nombre": "Hu Xiaowei", "Edad" :20 , "Hombre": Verdadero}

2.Matriz JSON-matriz JSON

[{ "Nombre": "Hu Xiaowei", "Edad": 20, "Hombre": Verdadero }, { "Nombre": "Zhao Xiaoliang", "Edad": 22, "Hombre": Falso}]

3. Un JSONObject un poco más complejo

{ "Nombre" :"Hu Xiaowei", "edad" = 20, "masculino": verdadero, "dirección": { "calle": "sur de la montaña Yuelu", "ciudad": "Changsha", "campo": "China" } }

4. Un JSONArray un poco más complejo

[

{ "Name": "Hu Xiaowei", "Ege" = 20, "Male": Verdadero, "Dirección": { "Calle": "Al sur de la montaña Yuelu", "Ciudad": "Changsha", "País": "China" }},

{ "Nombre": "Zhao Xiaoliang", "edad" = 22, "hombre": falso, "dirección": { "calle": "Puerto de Jiuzhou", "ciudad": "Zhuhai", "país": "China" }}

]

5. Lo que es más complicado es que estos son los datos que recogí del autobús Aibang.

{ " bus ":{ " bus ":[{ " last_foot_ dist ": " 0 ", " time ": " 37 ", " segments ": { " segment ": [{ "Línea _ nombre": "Línea especial Lishan (Apartamento para estudiantes de la Universidad Central Sur-Estación de tren de Changsha)") Universidad Normal de Hunan, dos millas y media al norte de la montaña Yuelu; (Calle Nanyang); intersección de Shuguang; intersección de Changdao; estación de tren de Changsha"," end_stat ":"estación de tren de Changsha"," línea _ xys ":" línea _ dist ":" 7535 "," start _ stat " :" Al sur de la montaña Yuelu " }}, " foot _ dist ": " 362 ", ". "Time": "41", "segments":{ "segment":[{ "line_name":" LV 1 Road (aldea de ciencia y educación-estación de tren de Changsha)", "foot_dist": "337"," stat_xys" . Universidad Normal de Hunan, 2,5 kilómetros al norte de la montaña Yuelu, Intersección de la carretera Changdao; Intersección; Estación de tren de Changsha "," end_stat ":"Estación de tren de Changsha", " línea _ xys ":" línea _ dist ":" 7822 ", " start _ stat ": "Al sur de la montaña Yuelu" }}, " pie _ dist ":" 337 ",".

El siguiente paso es la parte de análisis.

Primero, análisis directo

1.{ "Nombre": "Hu Xiaowei", "Edad": 20, "Hombre": Verdadero}

Java Código

public void parseJsonObject(String JSON){

Prueba {

objeto JSON objeto JSON = nuevo objeto JSON(JSON);

nombre de cadena = objeto JSON. getstring(" nombre ");

int edad = objeto JSON getint(" edad ");

boolean male = objeto JSON. " male ");

//Qué hacer a continuación

} catch (JSONException e) {

//TODO bloque catch generado automáticamente

e.printstacktrace();

}

}

2.[{ "Nombre": "Hu Xiaowei", "Edad": 20 , "Male": true}, { "Name": "Zhao Xiaoliang", "Edad": 22, "Male": False}]

Código Java

public void parseJSONArray ( String JSON){

Pruebe {

matriz JSON matriz JSON = nueva matriz JSON(JSON);

for(int I = 0; i<matriz JSON . length(); i++) {

Objeto JSON = matriz JSON . getjson objeto(I);

nombre de cadena = objeto JSON getstring(" nombre ");

int edad = objeto JSON. getint(" edad ");

boolean male = objeto JSON . get boolean(" male "); /p>

}

} catch (JSONException e) {

// TODO bloque catch generado automáticamente

e . p>

}

}

3.{ "Nombre": "Hu Xiaowei", "Edad" = 20, "Hombre": Verdadero, "Dirección" :{ "calle": "al sur de la montaña Yuelu", "ciudad": "Changsha", "campo": "China" }}

Código Java

public void parseJsonPerson( String JSON ){

Pruebe {

objeto JSON objeto JSON = nuevo objeto JSON(JSON);

nombre de cadena = objeto JSON getstring(" nombre ");

int edad = objeto JSON. getint(" edad ");

objeto booleano = objeto JSON. dirección JSON = objeto JSON . getjson objeto(" dirección ");

cadena calle

= dirección JSON . getstring(" calle ");

cadena ciudad = dirección JSON . getstring(" ciudad ");

cadena país = dirección JSON . ;

Dirección dirección = nueva dirección (calle, ciudad, país);

Persona persona = nueva persona (nombre, edad, sexo masculino, dirección); } catch (JSONException e) {

//TODO bloque catch generado automáticamente

e.printstacktrace();

}

}

4.

[

{ "Nombre": "Hu Xiaowei", "Edad" = 20, "Hombre": Verdadero, "Dirección": { "Calle": "Al sur de la montaña Yuelu", "Ciudad": "Changsha", "País": "China" }},

{ "Nombre": "Zhao Xiaoliang", "Edad" = 22, "Hombre": Falso, "Dirección": { "Calle": "Puerto de Jiuzhou", "Ciudad": "Zhuhai", "País": "China" }}

]

Código Java

public void parseJsonArrayPerson(String JSON){

List & ltPerson & gtpersons = new ArrayList & ltPerson & gt();

Pruebe {

matriz JSON = nueva matriz JSON(JSON);

for(int I = 0; i<matriz JSON . length(); i++) {

Objeto JSON = matriz JSON . getjson objeto(I);

nombre de cadena = objeto JSON . getstring(" nombre "); ");

boolean male = objeto JSON . get boolean(" male ");

dirección del objeto JSON JSON = objeto JSON . getjson object(" dirección ");

cadena calle = dirección JSON . getstring(" calle ");

cadena ciudad = dirección JSON . getstring(" ciudad ");

cadena país = dirección JSON . getstring(" país ");

Dirección dirección = nueva dirección (calle, ciudad, país);

Persona persona = nueva persona (nombre, edad, hombre, dirección);

p>

personas . add(persona);

Log.v("juno ", persona . tostring()); p>

} catch (JSONException e) {

//TODO bloque catch generado automáticamente

e.printstacktrace();

}

Registro .v("juno ",personas

.tostring());

}

5.{ " bus ":{ " bus ":[{ " último _ pie _ dist ": " 0 ", " hora " : "37 ", " segmentos ":{ " segmento ":[{ " Línea _ nombre ":" Línea especial Lishan (Apartamento para estudiantes de la Universidad Central Sur-Estación de tren de Changsha) Universidad Normal de Hunan; dos millas y media; Norte de la montaña Yuelu ; Cuarto Hospital Municipal; Educación Tu Hua (calle Taiping); Educación Niu Er (calle Nanyang); intersección de Shuguang; intersección de Changdao; "end_stat": "estación de tren de Changsha", línea _ xys "; :"," line_dist ":"7535"," start_stat":"al sur de la montaña Yuelu" }},"foot_dist":"362",""Time": "41","segments":{ "segmento ": [{" line_name ":" LV 1 Road (aldea de ciencia y educación-estación de tren de Changsha)", "foot_dist": "337", "stat_xys". Universidad Normal de Hunan, 2,5 kilómetros al norte de la montaña Yuelu, Intersección de la carretera Changdao; Intersección; estación de tren de Changsha "," end_stat ":"estación de tren de Changsha", "line_xys":" line_dist ":" 7822 "," start_stat ":"al sur de la montaña Yuelu" }}, " foot_dist ":" 337 ", ".

Código Java

Lista pública <tribute& gtparseJSON(String str){

Log.d("Datos JSON devueltos:", str) ;

List<tribute>busList = new ArrayList <tribute>();

Pruebe {

objeto JSON objeto JSON = nuevo objeto JSON( str);

objeto JSON bus JSON = objeto JSON . objeto getjson(" bus ");

matriz JSON busJSArray = matrices getjson(" bus ");

p>

for(int I. = 0;i<busjsarray . length();i++){

Objeto JSON busJSObject = objeto busjsarray(I);

Objeto JSON segsJSObject = objeto busjsarray(" segmentos ". );

matriz JSON segJSArray = segsjsobject . getjson array(" segmento ");

salu tion ST = new salu tion() ;

for(int j = 0; j & ltsegjsarray . longitud(); j++){

if(j==0){

Objeto JSON segJSObject = objeto segjsarray (j); /p>

ST . establecer línea _ nombre 1(segjsobject . getstring(" línea _ nombre "));

Log.d("nombre de línea", segJSObject.getString("nombre de línea" ));

ST . set stats 1(segjsobject . getstring(" stats "));

ST . setend _ stat 1 (segjsobject . getstring(" end _ stat ")

ST . setstart _ stat 1(segjsobject . getstring(" inicio _ stat ")); {

Objeto JSON segJSObject = segjsarray . getjson object(j);

ST . establecer línea _ nombre 2(segjsobject . getstring( " línea _ nombre "));

Log.d("Nombre de línea", segJSObject.getString("Nombre de línea"));

ST . setstats 2(segjsobject . getstring (" stats "));

ST . setend _ stat 2(segjsobject . getstring(" fin _ stat "));

ST . setstart _ stat 2(segjsobject . getstring ("s

tart _ stat "));

}

}

lista de autobuses . add(ST);

}

Devolver busList

} catch (JSONException e) {

//TODO bloque catch generado automáticamente

e printstacktrace();

}

Devolver nulo

}

Aquí acabo de obtener algunos datos que quería

En segundo lugar, use la clase JSON. biblioteca Gson para analizar JSON.

Gson es una biblioteca de clases Java proporcionada por Google para mapear entre objetos Java y datos JSON. Puede convertir cadenas JSON en objetos Java y viceversa. p>Primero, descargue GsonAPI desde code.google.com/p/google-gson/downloads/list.

Código Java

Google-gson- 1 . lanzamiento . zip

Luego copie GSON-1.7.jar a libs

Se puede resolver de dos maneras

(1.) Analizar datos JSON obteniendo. el objeto JsonReader:

Código Java

cadena de datos JSON = "[{ \ " nombre de usuario \ ":\ " arthinking \ ", \"userId\": 001}, {\ "username\":\"Jason\ ",\" userId\ ":002 }]";

Pruebe {

lector JSON = nuevo lector JSON (nuevo lector de cadenas( datos JSON));

lector . comenzar matriz();

mientras(reader.hasNext()){

comenzar objeto();

while(reader.hasNext()){

string tagName = lector . nextname();

if(tagname .quals(" nombre de usuario "){

sistema . fuera . println(lector . nextstring());

}

else if(nombre de etiqueta . igual(" ID de usuario ") {

sistema . println(lector . nextstring());

}

}

lector final();

}

lector .endarray();

}

Captura (Excepción e){

printstacktrace().

}

② Al asignar datos JSON a un objeto, utilice el método fromJson() del objeto Gson para obtener una matriz de objetos para la operación.

Código Java

Tipo listType = nuevo TypeToken & ltLinkedList & ltUser& gt& gt(){}.getType();

Gson Gson = nuevo Gson () ;

LinkedList<users>users = gson.fromJson(jsonData, tipo de lista);

for(Iterator Iterator = usuarios . Iterator(); iterador . tiene siguiente( );) {

Usuario Usuario =(Usuario)iterador .siguiente();

sistema fuera . println(usuario . obtener nombre de usuario()); user . get userid());

}

Normalmente uso el análisis directo, agregar una biblioteca de clases es lo más problemático...

Además, dejemos que Me quejo, ¡el editor de iteye es tan débil! ! !

Reimprimir