¿Cómo ve Android el formato de datos 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" }}
] p>
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