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

使用Volley请求Blynk接口时JSONArray无法转JSONObject错误如何解决

问题原因分析
  • 你调用的Blynk API返回的响应结构是["1"],属于JSON数组类型,但你使用了JsonObjectRequest发起请求,该类默认要求服务端返回JSON对象(即{}包裹的结构),Volley底层在做响应类型转换时直接抛出了类型不匹配异常。
  • 你的解析逻辑也和实际返回结构不匹配:返回的数组没有test字段,且数组内的元素是纯字符串"1",不是嵌套的JSON对象,你调用getJSONArray("test")、getJSONObject(i)的操作都不符合实际数据结构。
解决方案

把请求类替换为适配JSON数组的JsonArrayRequest,同时改写对应的解析逻辑即可,修改后的代码如下:

private fun jsonParse() {
    val url = "http://blynk-cloud.com/4ae3851817194e2596cf1b7103603ef8/get/D8"
    // 替换为JsonArrayRequest适配数组类型响应
    val request = JsonArrayRequest(Request.Method.GET, url, null, { response ->
        try {
            // 直接遍历返回的数组即可,无需额外取字段
            for (i in 0 until response.length()) {
                // 数组元素为字符串,直接取值即可
                val status = response.getString(i)
                textView.append(status)
            }
        } catch (e: JSONException) {
            e.printStackTrace()
        }
    }, { error -> error.printStackTrace() })
    requestQueue?.add(request)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:27:03