3 回答
TA贡献1850条经验 获得超11个赞
Android 代码实际上并未将 JSON 发送到服务器。它使用旧的键值表单字段格式,无法表示复杂的对象。要解决此问题,请将 Android 代码更改为使用,JsonObjectRequest而不是StringRequest,并将请求作为 传递JSONObject:
JSONObject params = new JSONObject();
params.put("subject",subject);
params.put("class",qSet[qsetCntr][0]);
params.put("user", thisuser);
params.put("result", new JSONArray(resltn));
params.put("qstn", new JSONArray(qstnn));
params.put("qid", new JSONArray(qiddn));
params.put("ans", new JSONArray(answn));
params.put("lickey","jg2ler3xvbdgsjkru12tutujghgjgl4jkjojuir8uttzcdadasretf");
reqPostanswers = new JsonObjectRequest(Request.Method.POST, urll, params,
new Response.Listener<String>() { ... },
new Response.ErrorListener() { ... }
});
完成此更改后,您很可能还必须更改 PHP 代码,以便它从请求正文中读取 JSON。
TA贡献1895条经验 获得超7个赞
首先问题出在你创建的json上。Json 数组应如下所示,
"qstn": ["607421_15958169393.JPG","410816_15958169444.JPG",
"655502_15958169495.JPG","625421_15958179086.JPG","625421_15958179086.JPG",
"461984_15958180457.JPG"]
按照上面所示的方式转换你的 json 数组并在 php 端使用,
$model = json_decode($json,true);
现在您可以访问该变量的值,如下所示:
$class = $model["class"];
//The 0th index of qstn array can be accessed as
$qsnt1 = $model["qstn"][0];
为了避免将来出现此类错误,请使用gson为您创建 json。
TA贡献1777条经验 获得超10个赞
使用ltrim和函数从字符串中rtrim删除 和[,然后使用explode可以将字符串转换为数组。]注意:此示例仅在分隔符为,空格 ( ", ")时有效
例如"qstn":
$array = json_decode($json, true);
$resultArray = explode(", ",rtrim(ltrim($array["qstn"],"["),"]"));
var_dump($resultArray);
- 3 回答
- 0 关注
- 117 浏览
添加回答
举报