You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将字符串m放入JSONObject后从PHP取数显示遇Volley解析错误

解决Volley ParseError: String无法转为JSONObject的问题

这个错误的核心原因其实很直白:你的PHP接口返回的是纯字符串"yes",但你在Android端用了JsonObjectRequest(或者默认期望解析成JSONObject),Volley会尝试把返回内容直接转成JSON对象,而纯字符串根本不符合JSON对象的格式,自然就抛出这个异常了。

给你两种实用的解决思路,按需选择:

思路1:修改PHP端,返回标准JSON格式

这是最规范的做法,把返回的字符串包装成合法的JSON对象,比如:

// PHP代码示例
$response = ["status" => "yes"];
echo json_encode($response);

这样返回的内容就是{"status":"yes"},完全符合JSON对象格式,Android端用JsonObjectRequest就能正常解析,后续只需通过getString("status")就能拿到"yes",再设置到mResultTextView里就行。

思路2:修改Android端,用StringRequest接收数据

如果不想改动PHP代码,那就在Android端换用StringRequest来接收纯字符串,跳过JSON解析逻辑:

// 替换原有的JsonObjectRequest为StringRequest
StringRequest stringRequest = new StringRequest(Request.Method.POST, 你的接口URL,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // 直接拿到返回的"yes"字符串,设置到TextView
                mResultTextView.setText(response);
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                mResultTextView.setText("请求出错:" + error.getMessage());
            }
        }) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        // 这里依然把字符串m放入请求参数
        Map<String, String> params = new HashMap<>();
        params.put("你的参数键名", m); // 替换成实际的参数键
        return params;
    }
};

// 将请求加入Volley队列
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(stringRequest);

额外提醒:如果坚持用JsonObjectRequest,一定要确保PHP返回的内容没有多余空格、HTML注释或其他非JSON内容,这些都会导致解析失败。

内容的提问来源于stack exchange,提问作者siddharth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:09:12