【问题标题】:Android json to php and backAndroid json 到 php 并返回
【发布时间】:2015-02-27 11:06:14
【问题描述】:

我正在向服务器发送arraylist 的自定义对象的Json 表示。然后我希望获取json 对象,解码成一个数组并检索属性并将它们放在MySQL 中。我想我遇到了编码问题。我的php 源代码是用记事本++ 编写的,并最终编码为utf-8。我相信 Android 在 utf-8 中编码了它的源代码和 SQlite Datavabe。我用来构造自定义对象的arraylist 的数据来自SQLite

当我在浏览器上自定义arraylistjson对象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

【问题讨论】:

    标签: php android json


    【解决方案1】:

    发送数据前缺少标头:

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

    【讨论】:

    • 能否请您记录此 json 响应:Log.d("JSON: ", json.toString());并粘贴到这里。
    • 12-31 10:47:41.726: D/SyncToMySQL(1826): json string: {"number of objects":0,"success":0}
    • 你试过了吗:stackoverflow.com/a/11734642/751387 - 我想你也有同样的问题
    • 也可以试试:header('Content-type=application/json; charset=utf-8');
    • 我仍然遇到同样的错误。我仍然收到我在上面的堆栈跟踪“奇怪的符号”中指出的奇怪符号
    【解决方案2】:

    在发送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);
    

    【讨论】:

      猜你喜欢
      • 2011-06-08
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2010-10-15
      • 2016-12-29
      相关资源
      最近更新 更多