我在Android手机中测试以下代码时出错:
org.json.JSONException:
Value <!-- of type java.lang.String cannot be converted to JSONArray
我的PHP代码如下:我使用了prepare语句
<?php
define('__ROOT__', dirname(dirname(__FILE__)));
require_once(__ROOT__.'/public_html/Config.php');
// Connecting to mysql database
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
// json response array
$response = array();
if (isset($_POST['treecondition'])) {
// receiving the post params
$treecondition = $_POST['treecondition'];
// get the tree details for google map marker
if($stmt = $mysqli->prepare("SELECT treeid, treelatitude, treelongitude FROM tree WHERE treecondition = ?")){
$stmt->bind_param("s", $treecondition);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($treeid, $treelatitude, $treelongitude);
if ($stmt->num_rows > 0) {
while($tree = $stmt->fetch()) {
$response['treeid'] = $treeid;
$response['treelatitude'] = $treelatitude;
$response['treelongitude'] = $treelongitude;
echo json_encode($response);
}
}
} else {
// user is not found with the credentials
$response["error"] = TRUE;
$response["error_msg"] = "Tree list view credentials are wrong. Please try again!";
echo json_encode($response);
}
$mysqli->close();
}
我的Android截击代码如下:使用Jsonarray
public void onResponse(String response) {
Log.d(TAG, "Location Response: " + response.toString());
hideDialog();
try {
JSONArray jTreeList = new JSONArray(response);
// boolean error = jObj.getBoolean("error");
ArrayList<LatLng> list = new ArrayList<LatLng>();
// Check for error node in json
for (int i = 0; i < jTreeList.length(); i++) {
JSONObject location = jTreeList.getJSONObject(i);
String treeid = location.getString("treeid");
// String treespecies = location.getString("treespecies");
Double treelatitude = location.getDouble("treelatitude");
Double treelongitude = location.getDouble("treelongitude");
LatLng latlng = new LatLng(treelatitude, treelongitude);
list.add(new LatLng(treelatitude, treelongitude));
// Create a heat map tile provider, passing it the latlngs of the police stations.
HeatmapTileProvider provider = new HeatmapTileProvider.Builder().data(list).build();
// Add a tile overlay to the map, using the heat map tile provider.
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(provider));
// Moving CameraPosition to last clicked position
mMap.moveCamera(CameraUpdateFactory.newLatLng(latlng));
// Setting the zoom level in the map on last position is clicked
mMap.animateCamera(CameraUpdateFactory.newLatLng(latlng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(3));
}
// Launch
} catch (JSONException e) {
// JSON error
e.printStackTrace();
Toast.makeText(getActivity().getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getActivity().getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting params to register url
Map<String, String> params = new HashMap<String, String>();
params.put("search", search);
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
请在程序输出后查看我的错误
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow D/ClusterMapFragment﹕ Location Response:
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ org.json.JSONException: Value <!-- of type java.lang.String cannot be converted to JSONArray
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:111)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at org.json.JSONArray.<init>(JSONArray.java:96)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at org.json.JSONArray.<init>(JSONArray.java:108)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.example.bharat.plantnow.Maps.ClusterMapFragment$2.onResponse(ClusterMapFragment.java:143)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.example.bharat.plantnow.Maps.ClusterMapFragment$2.onResponse(ClusterMapFragment.java:131)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5292)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
11-20 14:32:38.450 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
11-20 14:32:38.451 23138-23138/com.example.bharat.plantnow W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
您收到的Json响应没有格式化为Json,它包含无效字符'<!--'
,这就是您的jsonparser抛出Jsonexception的原因。
尝试将php文件保存在cp1252编码中
-
在Eclipse 中打开php文件
-
编辑>设置编码,然后设置为cp1252
-
保存