2017-07-16 107 views
0
String url = Config.DATA_URL+TempItem.toString().trim(); 

     StringRequest stringRequest = new StringRequest(Request.Method.GET,url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 

       showJSON(response); 
      } 
     }, 

這是我在解析我的響應中的構造函數。 我是Android工作室的初學者,我不知道如何解決這個錯誤。我已經閱讀過其他論壇,我試圖實施無濟於事。我的JSON結果是java.lang.String類型的值連接無法轉換爲JSONObject

"result":[ 
     { 
     "BusinessName":"KachangPuteh", 
     "AmountTotal":"100‌​", 
     "RequiredTotal":"2‌​00", 
     "MaxTotal":"500"   ‌​ 
     } 
    ] 
} 






private void showJSON(String response){ 
     String name=""; 
     String AmountTotal=""; 
     String RequiredTotal = ""; 
     String MaxTotal = ""; 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      String results= jsonObject.getString(Config.JSON_ARRAY); 

      JSONArray result = new JSONArray(results); 


      JSONObject stallsData = result.getJSONObject(0); 
      name = stallsData.getString(Config.KEY_NAME); 
      AmountTotal = stallsData.getString(Config.KEY_AmountTotal); 
      MaxTotal = stallsData.getString(Config.KEY_MT); 
      RequiredTotal = stallsData.getString(Config.KEY_RT); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Log.e("error ",e.getMessage()); 
     } 

     Stall.setText("Name:\t"+name+"\nAmountTotal:\t" +AmountTotal+ "\nMaxTotal:\t"+ MaxTotal); 
    } 

這是我的JSONObject改變JSONArray。

編輯: 這是我的PHP文件

<?php 


if($_SERVER['REQUEST_METHOD']=='GET'){ 

$id = $_GET['id']; 

require_once('conn.php'); 

$sql = "SELECT * FROM business WHERE BusinessID='".$id."'"; 

$r = mysqli_query($conn,$sql); 

$res = mysqli_fetch_array($r); 

$result = array(); 

array_push($result,array(
"BusinessName"=>$res["BusinessName"], 
"AmountTotal"=>$res["AmountTotal"], 
"RequiredTotal"=>$res["RequiredTotal"], 
"MaxTotal"=>$res["MaxTotal"] 



) 

    $str = json_encode(array("result"=>$result)); $str=str_replace('&#8203;','',$str); $str=str_replace('&zwnj;','',$str); echo $srt; 
echo json_encode(array("result"=>$result)); 
); 


mysqli_close($conn); 

} 

這是我的配置文件。

public class Config { 
    public static final String DATA_URL = "http://192.168.1.2/retrieveone.php?id="; 
    public static final String KEY_NAME = "BusinessName"; 
    public static final String KEY_AmountTotal = "AmountTotal"; 
    public static final String KEY_RT = "RequiredTotal"; 
    public static final String KEY_MT = "MaxTotal"; 
    public static final String JSON_ARRAY = "result"; 
} 

回答

0

您正在錯誤地解析數據。嘗試下面的代碼 -

JSONArray result = jsonObject.getJSONArray("result"); 
JSONObject stallsData = result.getJSONObject(0); 
+0


HahaHehe

+0

可以確保,在響應你沒有得到HTML標籤。 – Rahul

+0

我該如何解決它?如果提供代碼會有幫助 – HahaHehe

0
  • 我在這裏做在你的代碼的一些變化。

    { 「結果」:[
    {
    「BUSINESSNAME」: 「KachangPuteh」, 「AmountTotal」: 「100」, 「RequiredTotal」: 「2 00」, 「MaxTotal」:」 500" }]}

這將是你的實際響應。

現在我要解析它。

`私人無效showJSON(字符串響應){

字符串名稱= 「」;

String AmountTotal =「」;

String RequiredTotal =「」;

String MaxTotal =「」;

嘗試{

JSONObject jsonObject = new JSONObject(response); 

JSONArray結果= jsonObject.getJSONArray( 「結果」); //這條線是新

 for(int i=0;i<result.length;i++){ 
      JSONObject stallsData = result.getJSONObject(i); 
      name = stallsData.getString(Config.KEY_NAME); 
      AmountTotal = stallsData.getString(Config.KEY_AmountTotal); 
      MaxTotal = stallsData.getString(Config.KEY_MT); 
      RequiredTotal = stallsData.getString(Config.KEY_RT); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Log.e("error ",e.getMessage()); 
     } 

} Stall.setText( 「姓名:\ t」 的+名稱+ 「\ nAmountTotal:\ t」 的+ AmountTotal + 「\ nMaxTotal:\ t」 的+ MaxTotal); }

+0

java.lang.String類型的值不能轉換爲JSONObject這個錯誤出來了,我該怎麼做?如果可以提供代碼,將會有所幫助 – HahaHehe

+0

我認爲你得到不正確的迴應,試圖請求你在發佈人身上的網址,而不是你可以檢查你的確切內容。 –

0

你可以寫

try { 
         JSONObject jsonObject = new JSONObject(response); 
         JSONArray loginNodes = jsonObject.getJSONArray("result"); 
         pDialog.dismiss(); 
         for (int i = 0; i < loginNodes.length(); i++) { 
          JSONObject jo = loginNodes.getJSONObject(i); 

          String BusinessName= jo.getString("BusinessName"); 
          String AmountTotal= jo.getString("AmountTotal"); 
          String RequiredTotal= jo.getString("RequiredTotal"); 
          String MaxTotal= jo.getString("MaxTotal"); 


         } 


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

輸入錯誤字符0的輸入結束 – HahaHehe

+0

您能告訴我詳細信息嗎?你感覺有什麼問題,直到 –

相關問題