java.lang.String类型的值连接无法转换为JSONObject

时间:2017-07-16 08:22:12

标签: android json

 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 studio的初学者,我不知道如何解决这个错误。我读过其他试图实施的论坛无济于事。我的JSON结果是

"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";
}

3 个答案:

答案 0 :(得分:0)

您正在错误地解析数据。请尝试以下代码 -

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

答案 1 :(得分:0)

  • 我在这里对代码进行了一些更改。

    {&#34;导致&#34;:[
         {
            &#34; BUSINESSNAME&#34;:&#34; KachangPuteh&#34 ;,         &#34; AmountTotal&#34;:&#34; 100&#34 ;,         &#34; RequiredTotal&#34;:&#34; 2 00&#34 ;,         &#34; MaxTotal&#34;:&#34; 500&#34;      }]}

这将是您的实际回应。

现在我要解析它。

`private void showJSON(String response){

字符串名称=&#34;&#34 ;;

String AmountTotal =&#34;&#34 ;;

String RequiredTotal =&#34;&#34 ;;

String MaxTotal =&#34;&#34 ;;

尝试{

JSONObject jsonObject = new JSONObject(response);

JSONArray result = jsonObject.getJSONArray(&#34; result&#34;); //这条线是新的

        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(&#34;名称:\ t&#34; +名称+&#34; \ nAmountTotal:\ t&#34; + AmountTotal +&#34; \ nMaxTotal:\ t&#34; + MaxTotal );        }

答案 2 :(得分: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();
                    }