2017-04-20 19 views
0

json構文解析を実行した後、文字列形式の値が取得できない理由を教えてください。 ps:接続部分がすべて正常に動作しています。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(); 
    } 
関連する問題