2017-04-20 95 views
0

誰能告訴我爲什麼在執行json解析後沒有獲取數據的字符串格式值 ps:連接部分全部工作正常,現在我只想將json解析方法添加到它中。無法解析JSON到字符串格式

try { 
    strUrl = "http://10.0.2.2/android/login.php?username=" + u + "&password=" + p + ""; 
    URL url = new URL(strUrl); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
    con.setRequestMethod("POST"); 
    con.connect(); 


    BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream())); 
    String value = bf.readLine(); 


    String json = value; 
    JSONObject parentObject = new JSONObject(json); 
    JSONArray parentArray = parentObject.getJSONArray("Data"); 
    JSONObject finalObject = parentArray.getJSONObject(0); 


    String username = finalObject.getString("user_name"); 
    String result = username; 
    return result; 

這是我的API結果:

{ 
    "Status": "true", 
    "Message": "login successfully", 
    "Data": [{ 
     "user_name": "JS" 
    }] 
} 
+0

發佈logcat ..... – Champandorid

+0

您的問題不清楚。你是否想從'Data'JSONArray'獲取''user_name''的值? – Naz141

+0

@ Naz141是兄弟,就像你說的 –

回答

0

試試這個

BufferedReader r = new BufferedReader(new InputStreamReader(con.getInputStream())); 
    StringBuilder total = new StringBuilder(); 
    String value; 
    while ((value= r.readLine()) != null) { 
     total.append(value).append('\n'); 
    } 
    String json = value; 
    JSONObject parentObject = new JSONObject(json); 
    JSONArray parentArray = parentObject.getJSONArray("Data"); 
    JSONObject finalObject = parentArray.getJSONObject(0); 
    String username = finalObject.getString("user_name"); 
    String result = username; 
0

試試這個。

  BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream())); 
      response = convertStreamToString(in); 
JSONObject jObject = new JSONObject(response); 
JSONArray jsonMainArr = jObject.getJSONArray("Data"); 

    JSONObject jsonObj = jsonMainArr.getJSONObject(0); 

String username = jsonObj.getString("user_name").toString(); 
return username; 



private String convertStreamToString(InputStream is) { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
     StringBuilder sb = new StringBuilder(); 

     String line; 
     try { 
      while ((line = reader.readLine()) != null) { 
       sb.append(line).append('\n'); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return sb.toString(); 
    }