2017-05-27 119 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返回的字符串。你必须改正这种方法。