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":"200",
"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('​','',$str); $str=str_replace('‌','',$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 :(得分: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();
}