2012-05-07 16 views
12

Tengo un solo archivo de texto guardado en la carpeta/res cruda en eclipse. Estoy mostrando aquí el contenido de ese archivo:JSON de análisis en Android - desde la carpeta de recursos

{ 
    "Categories": { 
     "Category": [ 
      { 
       "cat_id": "3", 
       "cat_name": "test" 
      }, 
      { 
       "cat_id": "4", 
       "cat_name": "test1" 
      }, 
      { 
       "cat_id": "5", 
       "cat_name": "test2" 
      }, 
      { 
       "cat_id": "6", 
       "cat_name": "test3" 
      } 
     ] 
    } 
} 

Quiero analizar esta matriz JSON. ¿Cómo puedo hacer esto?

¿Alguien puede ayudarme?

Gracias de antemano.

+1

Wow 9K, good going @Waqas – Lucifer

+0

posible duplicado de [¿Cómo analizar cadena json en Android?] (Http://stackoverflow.com/questions/8091051/how-to-parse-json-string-in-android) –

+0

Por favor dígame. ¿Cómo puedo escribir estos datos en una cadena? Ayuda –

Respuesta

34
//Get Data From Text Resource File Contains Json Data.  
InputStream inputStream = getResources().openRawResource(R.raw.json); 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 

int ctr; 
try { 
    ctr = inputStream.read(); 
    while (ctr != -1) { 
     byteArrayOutputStream.write(ctr); 
     ctr = inputStream.read(); 
    } 
    inputStream.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Log.v("Text Data", byteArrayOutputStream.toString()); 
try { 
    // Parse the data into jsonobject to get original data in form of json. 
    JSONObject jObject = new JSONObject(
      byteArrayOutputStream.toString()); 
    JSONObject jObjectResult = jObject.getJSONObject("Categories"); 
    JSONArray jArray = jObjectResult.getJSONArray("Category"); 
    String cat_Id = ""; 
    String cat_name = ""; 
    ArrayList<String[]> data = new ArrayList<String[]>(); 
    for (int i = 0; i < jArray.length(); i++) { 
     cat_Id = jArray.getJSONObject(i).getString("cat_id"); 
     cat_name = jArray.getJSONObject(i).getString("cat_name"); 
     Log.v("Cat ID", cat_Id); 
     Log.v("Cat Name", cat_name); 
     data.add(new String[] { cat_Id, cat_name }); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

"Categorías" es el objeto Json y "Categoría" es Json Array que contiene todos los registros. –

+1

Muchas gracias, Deval. Esto funciona bien ...... :-) disfruta –

0
  1. Leer en una String
  2. Crear un JSONArray con el recuperado String
  3. Uso get() métodos para recuperar sus datos
2

Este es su código:

String fileContent; 
      JSONObject jobj = new JSONObject(fileContent); 
      JSONObject categories = jobj.getJSONObject("Categories"); 
      JSONArray listCategory = categories.getJSONArray("Category"); 
      for(int i = 0; i < listCategory.length(); i++) { 
       JSONObject entry = listCategory.getJSONObject(i); 
       //DO STUFF 
      } 
+0

¿Qué debo pasar en fileContent? Sí, sé que es una cadena. Pero, ¿cómo pasar esta cadena en mi caso? Por favor, dame su formato –

+0

fileContent es el contenido de tu archivo en res/raw. ¿También necesitas el código para cargar eso? – StErMi

+0

Hola, muchas gracias. Intenté esto. Funciona bien :) –

0

A ndroid marco tiene un ayudante JsonReader in android.util package

funciona como un encanto, presentan gran ejemplo. En primer bloque pequeño error con el corchete ausente '}':

public List readJsonStream(InputStream in) throws IOException { 
    JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8")); 
    try { 
     return readMessagesArray(reader); 
    } finally { 
     reader.close(); 
    } 
} 

existe también gran biblioteca de Google-devs GSON, que le da la posibilidad de mapear la estructura JSON directamente al modelo de Java: echar un vistazo here

Cuestiones relacionadas