【发布时间】:2015-02-27 11:06:14
【问题描述】:
我正在向服务器发送arraylist 的自定义对象的Json 表示。然后我希望获取json 对象,解码成一个数组并检索属性并将它们放在MySQL 中。我想我遇到了编码问题。我的php 源代码是用记事本++ 编写的,并最终编码为utf-8。我相信 Android 在 utf-8 中编码了它的源代码和 SQlite Datavabe。我用来构造自定义对象的arraylist 的数据来自SQLite。
当我在浏览器上自定义arraylist的json对象POST时,json被成功读取。但是,当我通过我的 android 发送它时,我收到以下错误。有人帮忙吗?
Android 代码:
ArrayList<Article> list;
list = recallSharedListFromDb();
// Create json
Gson gson = new GsonBuilder().create();
String json_arrayList = gson.toJson(list);
// Build parameters.
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("jsonObj", json_object));
JSONObject json = jsonParser.makeHttpRequest(url_register_code, "POST", param);
// Read json response coming from server.
Log.d("SyncToMySQL", "json string: "+ json.toString());
PHP代码:
//获取Android应用发布的JSON $json = $_POST["jsonObj"]; // 这行得通... //将JSON解码为数组 $data = json_decode($json);
$num_objects = count($data);
if($data){
$response["number of objects"] = $num_objects;
$response["success"] = 1;
echo $json. "<br><br>";;
}else{
$response["number of objects"] = 0;
$response["success"] = 0;
}
echo json_encode($response);
堆栈跟踪:
12-31 09:54:59.966: E/JSON Parser(1826): Error parsing data org.json.JSONException: Value (STRANGE LOOKING SYMBOLS) of type java.lang.String cannot be converted to JSONObjec
【问题讨论】: