2012-05-07 2 views
12

Я сохранил один текстовый файл в res/raw папка в затмении. Я показываю здесь содержимое этого файла:JSON Парсинг в android - из папки ресурсов

{ 
    "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" 
      } 
     ] 
    } 
} 

Я хочу проанализировать этот массив JSON. Как я могу это сделать?

Может кто-нибудь, пожалуйста, помогите мне ??

Заранее спасибо.

+1

Wow 9K, good going @Waqas – Lucifer

+0

Возможный дубликат [Как разобрать строку json в Android?] (Http://stackoverflow.com/questions/8091051/how-to-parse-json-string-in-android) –

+0

Пожалуйста, скажите мне. как я могу записать эти данные в строку? Помогите мне –

ответ

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

«Категории» - это объект Json, а «Category» - Json Array, содержащий все записи. –

+1

Большое спасибо Deval. Это прекрасно работает ...... :-) enjoy –

0
  1. Прочти в String
  2. Создать JSONArray с извлеченной String
  3. Использование получить() методы, чтобы получить свои данные
2

Это ваш код:

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

Что мне передать в fileContent? Да, я знаю, что это строка. Но как передать эту строку в моем случае? Пожалуйста, дайте мне свой формат –

+0

fileContent - это содержимое вашего файла в res/raw. Вам также нужен код для загрузки? – StErMi

+0

Эй, большое вам спасибо. Я попробовал это. Он отлично работает :) –

0

A ndroid framework имеет помощника JsonReader in android.util package

Работает как шарм, представлен отличный пример. В первом блоке небольшой ошибке с отсутствующей квадратной скобкой «}»:

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

существует также большую библиотеку от Google-дэвов GSON, который дает возможность сопоставить JSon структуру прямо в модель Java: посмотри here

Смежные вопросы