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
相关产品推荐
相关产品推荐

