2013-06-27 4 views
0

Я искал всю ночь, но я не мог найти ничего, что сработало бы для меня.Как читать из JSON-файла в Java

Я пытаюсь прочитать и проанализировать JSON-файл на Java. Я пробовал каждый найденный мной код, но никто не работал для меня. Я очень благодарен за вашу помощь.

Так вот код:

public void parseJSONData() { 

    clearData(); 

    try { 
     FileInputStream in = openFileInput(getFilesDir() 
       + "/tbl_category.json"); 
     InputStreamReader inputStreamReader = new InputStreamReader(in); 
     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
     StringBuilder sb = new StringBuilder(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      sb.append(line); 
     } 

Я использую getFilesDir() + "/tbl_category.json" потому загрузки приложения some.json файл в /data/data/com.the.restaurant/ файлы/когда он запущен.

А вот остальная часть кода класса:

 // parse json data and store into arraylist variables 
     JSONObject json = new JSONObject(line); 
     JSONArray data = json.getJSONArray("data"); 

     for (int i = 0; i < data.length(); i++) { 
      JSONObject object = data.getJSONObject(i); 

      JSONObject category = object.getJSONObject("Category"); 

      Category_ID.add(Long.parseLong(category 
        .getString("Category_ID"))); 
      Category_name.add(category.getString("Category_name")); 
      Category_image.add(category.getString("Category_image")); 
      Log.d("Category name", Category_name.get(i)); 

     } 

    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     IOConnect = 1; 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Я только начал изучать Java, и я наиболее высоко ценю вашу помощь!

+1

Конкретно. Что не получается, что происходит, что должно произойти? –

+0

И проблема в том, где? Что именно не работает? –

+0

Изменить JSONObject json = new JSONObject (строка); к JSONObject json = new JSONObject (sb.toString()); – Divers

ответ

1

В этой строке вы читаете только одну строку, чтобы создать объект JSON.

JSONObject json = new JSONObject(line); 

Он должен использовать StringBuilder, который содержит всю строку JSON.

JSONObject json = new JSONObject(sb.toString()); 
4

Вместо

JSONObject json = new JSONObject(line); 

, который преобразует последнюю строку в объект JSON (и, вероятно, терпит неудачу), вам нужно

JSONObject json = new JSONObject(sb.toString()); 

который бы конкатенацию линий (содержание StringBuilder)

+0

Downvoted * why *? –