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

Android Studio中用Kotlin+Volley解析嵌套JSON对象,仅获取typeOfQuestion

解决Volley解析嵌套JSON对象并仅展示指定字段的问题

你的核心问题是没正确处理JSON的嵌套结构,同时可以简化代码只保留需要的逻辑,修改方案如下:

关键修改点

  • 原代码直接从顶层response取字段是错误的,因为目标字段都嵌套在questionnaire对象里,必须先获取这个嵌套对象
  • 既然只需要展示typeOfQuestion,删除不需要的变量和UI赋值代码,减少冗余

修改后的完整代码

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // 只保留需要的TextView,其他不需要的可直接删除
    typeTV = findViewById(R.id.idTVType)

    val queue: RequestQueue = Volley.newRequestQueue(applicationContext)

    val request = JsonObjectRequest(Request.Method.GET, url, null, { response ->
        loadingPB.setVisibility(View.GONE)

        try {
            // 先获取嵌套的questionnaire对象
            val questionnaireObj = response.getJSONObject("questionnaire")
            // 从嵌套对象中取出需要的typeOfQuestion字段
            val typeOfQuestion: String = questionnaireObj.getString("typeOfQuestion")
            
            // 仅设置需要展示的文本
            typeTV.text = typeOfQuestion

        } catch (e: Exception) {
            e.printStackTrace()
            Toast.makeText(this@MainActivity, "解析数据出错", Toast.LENGTH_SHORT).show()
        }

    }, { error ->
        Log.e("TAG", "请求失败: $error")
        Toast.makeText(this@MainActivity, "获取数据失败", Toast.LENGTH_SHORT).show()
    })
    queue.add(request)
}

补充说明

如果布局里还保留了questionTV和answerTV但不想显示它们,可以通过questionTV.visibility = View.GONE把它们隐藏,或者直接从布局文件中删除这些控件,进一步简化代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:57:43