2017-03-04 48 views
0

响应字符串是这样的:我得到如下所示的HTTP响应字符串。我想从响应字符串subject_id和状态字符串

{ 
    "images": [ 
    { 
     "transaction": { 
     "status": "success", 
     "topLeftX": 325, 
     "topLeftY": 451, 
     "gallery_name": "Ironman", 
     "subject_id": "Tony", 
     "confidence": 0.99414, 
     "height": 630, 
     "width": 630, 
     "face_id": 1, 
     "quality": 1.75477 
     }, 
     "candidates": [ 
     { 
      "subject_id": "Tony", 
      "confidence": 0.99414, 
      "enrollment_timestamp": "1487644861022" 
     }, 
     { 
      "subject_id": "Tony", 
      "confidence": 0.99414, 
      "enrollment_timestamp": "1487644876280" 
     } 
     ] 
    } 
    ] 
} 

我想这个代码,但没有工作..

JSONArray arr = new JSONArray(response); 
JSONObject jObj = arr.getJSONObject(0); 
String status = jObj.getString("status"); 
String message = jObj.getString("subject_id"); 

+0

你有没有考虑过使用像Gson这样的JSON解析器? –

+0

什么工具用于呼叫Web服务? –

+0

不,我不知道很多关于GSON..can请你给我说说如何在这个problem..Thanks使用GSON快速回复 – MRP192

回答

0

您可以使用GSON解析JSON字符串。如果你只是想在图像数组的第一个对象,你可以使用此代码:

JsonParser jsonParser = new JsonParser(); 
JsonObject obj = jsonParser.parse(responseString).getAsJsonObject(); 
JsonArray images = obj.getAsJsonArray("images"); 
String subjectId = images.get(0).getAsJsonObject().get("transaction") 
    .getAsJsonObject().get("subject_id").getAsString(); 
+0

非常感谢你的工作。你很棒。 – MRP192

0

您可以创建POJO类作为回应 您也可以使用GSON库获取响应字符串。

+0

请给我一些例子 – MRP192

1

使用JSON简单lib

JSONObject json = new JSONObject(yourString); 
JSONArray images = json.getJSONArray("images"); 

,您可以循环抛出这个阵列

for (int i = 0; i < images.length(); i++) { 
    JSONObject o = images.getJSONObject(i); 
    .... 
} 
0

使用本

@Override 
    protected void onPostExecute(String result) { 
     JSONObject jsonobj; 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 


     if (result != null) { 
      if (result.equals("failure")) { 
       Toast.makeText(context, "Check your Username or Password", Toast.LENGTH_LONG).show(); 
       dialog.dismiss(); 

      } else {//ths is getting data for vehicl_list_unread_count code, client id,restapi_key 
       try { 
        Log.d(TAG, "onPostExecute: this inner of post" + getcontent_for_validate); 
        jsonobj = new JSONObject(getcontent_for_validate); 
        System.out.println("this is get content" + jsonobj.toString()); JSONArray array = jsonobj.getJSONArray("images");for (int i = 0; i < array.length(); i++) { 
         JSONArray transaction = array.getJSONObject(i).getJSONArray("transaction");for (int i = 0; i < array.length(); i++) 
         String status = transaction.getJSONObject(i).getString("status"); 
         Password = editText_password.getText().toString(); 
        } 


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


      } 


     } else { 
      dialog.dismiss(); 
      Toast.makeText(context, "Check net connection", Toast.LENGTH_LONG).show(); 
     } 

    } 
0

您试图

JSONArray arr = new JSONArray(response); 

,但你应该

JSONObject arr = new JSONObject(response); 

因为你的主要JSON是JSON对象,而不是JSONArray

+0

我会尝试你的代码,并让你知道..谢谢反正 – MRP192