2014-12-31 53 views
1

我发送一个Json自定义对象arraylist表示到服务器。我希望接下来将这个对象解码为一个数组,然后检索这些属性并将它们放在MySQL中。我想我有一个编码问题。我的php源代码是用notepad ++编写的,最终编码为utf-8。我相信Android会使用utf-8对其源代码和SQlite Datavabe进行编码。我用来构建我的自定义对象的数据来自SQLite安卓json到php和回

当我在浏览器上自定义arraylist的对象时,我的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代码:

//获取JSON张贴由Android应用程序 $ 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 

回答

0

缺少标题发送数据前:

header('Content-type: application/json'); 
echo json_encode($response);; 
+0

恐怕没有工作。我剪切并粘贴了你的帖子。 – derek

+0

您可以请记录此JSON响应:Log.d(“JSON:”,json.toString());并粘贴在这里。 –

+0

12-31 10:47:41.726:D/SyncToMySQL(1826):json字符串:{“对象数量”:0,“成功”:0} – derek

0

发送JSON之前添加header('Content-type: application/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; 
} 

header('Content-type: application/json'); 
echo json_encode($response); 
+0

我仍然收到相同的错误 – derek