2015-11-07 121 views
1

我想從下面提到的JSON響應中獲得特定的values (ID as a string, branches of address_one and two)。請幫幫我。如何從JSON響應Android獲取特定值?

我的迴應

{ 
   "response":{ 
      "school":"inox", 
      "grad":"first", 
     }, 
   "ID":"1234567890101112", 
   "branches":{ 
      "address_one":"ISA", 
      "address_two":"DOA" 
   }, 
   "my school":{ 
      "inox":"first" 
   }, 
} 

我的代碼:

try { 
     JSONObject data = response.getJSONObject("response"); 
     String school_value = data.getString(KEY_SCHOOL); 
     String grad_value = data.getString(KEY_GRAD); 

     System.out.println("RESPONSE:" + data + school_value + grad_value); 

    } catch (JSONException e) { 
        e.printStackTrace(); 
        Toast.makeText(getApplicationContext(), 
          "Error: " + e.getMessage(), 
          Toast.LENGTH_LONG).show(); 
    } 

回答

0

通過這種方式,您可以訪問所有的價值觀....`嘗試{ 的JSONObject responceData = response.getJSONObject( 「迴應」); String school_value = responceData.getString(KEY_SCHOOL); String grad_value = responceData.getString(KEY_GRAD);

String id = response.getString("1234567890101112") 

    JSONObject brances = response.getJSONObject("branches"); 
    String address_one = brances.getString("address_one"); 
    String address_two = brances.getString("address_one"); 

    JSONObject myScool = response.getJSONObject("my school"); 
    String inox = brances.getString("inox"); 

    System.out.println("Responce in Json: " + responce.toString); 
    System.out.println("Responce extracted: " + school_value + " " + grad_value + 
      " " + id + " " +address_one + " " + address_two + " " + inox); 


} catch (JSONException e) { 
    e.printStackTrace(); 
    Toast.makeText(getApplicationContext(), 
      "Error: " + e.getMessage(), 
      Toast.LENGTH_LONG).show(); 
}` 
0

IDresponse的JSONObject。 address_oneaddress_twobranches JSONObject的鍵是內部response的JSONObject:

// get ID 
String strID= response.optString("ID"); 

// get branches JSONObject 
JSONObject jsonBranches = response.getJSONObject("branches"); 

// get address_one and address_two from jsonBranches 

//address_one 
String address_one= jsonBranches.optString("address_one"); 

//address_two 
String address_two= jsonBranches.optString("address_two"); 
0

如果您在字符串響應,那麼首先將其轉換爲JSON對象,之後解析如果拿不到然後用JSON關鍵

檢查您的參數匹配後
JSONObject response =new JSONObject(response_string); 
    JSONObject data = response.getJSONObject("response"); 
    String school_value = data.getString("school"); 
    String grad_value = data.getString("grad"); 
0

首先,您發佈的代碼段不是有效的json。我認爲,正確的形式是,在關閉大括號前沒有逗號:

{ 
    "response": { 
    "school": "inox", 
    "grad": "first" 
    }, 
    "ID": "1234567890101112", 
    "branches": { 
    "address_one": "ISA", 
    "address_two": "DOA" 
    }, 
    "my school": { 
    "inox": "first" 
    } 
} 

除此之外,您的代碼似乎很好。首先得到地址分支對象,然後得到地址字符串:

JSONObject branches = response.getJSONObject("branches"); 
String address1 = branches.getString("address_one"); 
String address2 = branches.getString("address_two"); 

希望它能工作。

0

像這樣使用。

try { 
    JSONObject data = response.getJSONObject("response"); 
    JSONObject branch= data.getJSONObject("branches"); 
    String schoolValue = data.getString("KEY_SCHOOL"); 
    String gradValue = data.getString("KEY_GRAD"); 
String id = data.getString("ID"); 
String addressOne= branch.getString("address_one"); 
String addressTwo= branch.getString("address_two"); 


    System.out.println("RESPONSE:" + data + school_value + grad_value); 

} catch (JSONException e) { 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), 
         "Error: " + e.getMessage(), 
         Toast.LENGTH_LONG).show(); 
} 
0

與您的代碼替換此,您將得到ID在SOP

try { 
      JSONObject data = response.getJSONObject("response"); 
      String school_value = data.getString(KEY_SCHOOL); 
      String grad_value = data.getString(KEY_GRAD); 
      String id=response.getString("ID"); 

    System.out.println("RESPONSE:" + data + school_value + grad_value+id); 

    } catch (JSONException e) { 
        e.printStackTrace(); 
        Toast.makeText(getApplicationContext(), 
          "Error: " + e.getMessage(), 
          Toast.LENGTH_LONG).show(); 
    } 
印刷