2017-07-16 228 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

您能告诉我详细信息吗?你感觉有什么问题,直到 –

相关问题