2017-05-27 70 views
0

我有一個JSON一樣,JSON解析對象在android系統

{ 

"Area1": "areacode1", 
"Area2": "areacode2", 
"Area3" : "areacode3" 

} 

我想解析JSON和迭代 「區域」 它autocompletetextview, 我的代碼,

//閱讀從本地文件JSON

public String loadJSONFromAsset() { 
    String json = null; 
    try { 

     InputStream is = getAssets().open("arealist.json"); 

     int size = is.available(); 

     byte[] buffer = new byte[size]; 

     is.read(buffer); 

     is.close(); 

     json = new String(buffer, "UTF-8"); 



    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    return json; 

} 

//解析和迭代JSON ...

try { 
     JSONObject obj = new JSONObject(loadJSONFromAsset()); 
      Iterator<String> keys= obj.keys(); 
     while (keys.hasNext()) 
     { 
      String keyValue = (String)keys.next(); 
      String valueString = obj.getString(keyValue); 
      Log.d("Details-->",valueString); 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

我得到的錯誤爲「類型不匹配:無法將JSONObject轉換爲JSONArray」,我想知道如何將JSONObject轉換爲字符串並迭代到List.I是新的Android,因此很困惑如何進一步進行 Kindly幫助,提前致謝。

+0

你確定你的json返回這個響應嗎? –

回答

1

嘗試讀取arealist.json這樣

InputStream inputStream = getContext().getAssets().open("arealist.json"); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 


String line; 
      StringBuilder sb = new StringBuilder(); 
      while ((line = reader.readLine()) != null){ 
       sb.append(line).append("\n"); 
      } 

      //parse JSON and store it in the list 
      String jsonString = sb.toString(); 

和JSONObject的

+0

它的工作,謝謝 – samz22

0

使用jsonString通過下面的代碼調試給出JSON後:

String json = "{\n" + 
      "\n" + 
      " \"Area1\": \"areacode1\",\n" + 
      " \"Area2\": \"areacode2\",\n" + 
      " \"Area3\" : \"areacode3\"\n" + 
      "\n" + 
      " }"; 
    try { 
     JSONObject obj = new JSONObject(json); 
     Iterator<String> keys= obj.keys(); 
     while (keys.hasNext()) 
     { 
      String keyValue = (String)keys.next(); 
      String valueString = obj.getString(keyValue); 
      Log.d("Details-->",valueString); 
     } 



    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

我意識到,你讀的是哪個json沒有任何問題。問題是從loadJSONFromAsset返回的字符串。你必須改正這種方法。