为了账号安全,请及时绑定邮箱和手机立即绑定

使用java/android发送的数据在php中进行JSON迭代

使用java/android发送的数据在php中进行JSON迭代

PHP
慕桂英546537 2023-09-22 16:08:29
我的 PHP 服务器从我的 Android 接收以下 json :{  "class":"SURESHOT",  "subject":"Maths",  "qstn":"[607421_15958169393.JPG, 410816_15958169444.JPG,           655502_15958169495.JPG,   625421_15958179086.JPG,           625421_15958179086.JPG, 461984_15958180457.JPG]",  "ans":"[C, B, A, D, C, C]",  "lickey":"jg2ler3xvbdgsjkru12tutujghgjgl4jkjojuir8uttzcdadasretf",  "user":"1000",  "result":"[fail,fail, pass, fail, fail, fail]",  "qid":"[37, 38, 39, 40, 40, 41]" }现在在 PHP 中迭代数据是不可能的。“qstn”、“ans”和“结果”是有问题的。我们怎样才能正确地做到这一点呢?我用于json_encode(($_POST),true);初步数据转换。这是我运行来获取 JSON 的代码:这是我获取 json 的代码。   reqPostanswers = new StringRequest(Request.Method.POST, urll,new  Response.Listener<String>() {        @Override        public void onResponse(String response) {            //Log.i("posting info :",response.toString());        }    }, new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError error) {            //Log.i("posting error  :",error.toString());        }    }){        @Override        protected Map<String,String> getParams(){            Map<String,String> params = new HashMap<String, String>();            params.put("subject",subject);            params.put("class",qSet[qsetCntr][0]);            params.put("user", thisuser);            params.put("result",resltn.toString());            params.put("qstn",qstnn.toString());            params.put("qid", qiddn.toString());            params.put("ans",answn.toString());            params.put("lickey","jg2ler3xvbdgsjkru12tutujghgjgl4jkjojuir8uttzcdadasretf");            return params;        }    };    answerpostQueue = Volley.newRequestQueue(getApplicationContext());    answerpostQueue.add(reqPostanswers);pram 中设置的数组或变量仅是 Arraylists。
查看完整描述

3 回答

?
慕盖茨4494581

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。

查看完整回答
反对 回复 2023-09-22
?
人到中年有点甜

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。


查看完整回答
反对 回复 2023-09-22
?
不负相思意

TA贡献1777条经验 获得超11个赞

使用ltrim和函数从字符串中rtrim删除 和[,然后使用explode可以将字符串转换为数组。]注意:此示例仅在分隔符为,空格 ( ", ")时有效


例如"qstn":


$array = json_decode($json, true);


$resultArray = explode(", ",rtrim(ltrim($array["qstn"],"["),"]"));


var_dump($resultArray);


查看完整回答
反对 回复 2023-09-22
  • 3 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信