Android调用CNPJ查询API解析JSON时JSONObject无法转String如何解决
问题原因
你触发报错的核心是字段取值方法调用错误:
- 目标字段
nome的类型是普通字符串,不是嵌套JSON对象,你调用getJSONObject()取值会触发类型不匹配异常 - 只有当目标字段对应的值是
{}包裹的JSON对象时才需要用getJSONObject(),如果是[]包裹的数组则用getJSONArray(),普通字符串直接用getString()即可
修复方案
只需要修改onResponse回调里的取值逻辑即可:
@Override public void onResponse(JSONObject response) { try { // 把原来的getJSONObject改成getString即可 json = response.getString("nome"); razao.setText(json); } catch (JSONException e) { e.printStackTrace(); Toast.makeText(getActivity(), "Invalid ! ", Toast.LENGTH_SHORT).show(); } }
补充说明
如果后续需要取atividade_principal里的字段,可以参考如下写法:
JSONArray atividadeList = response.getJSONArray("atividade_principal"); JSONObject primeiroAtividade = atividadeList.getJSONObject(0); String atividadeText = primeiroAtividade.getString("text");
内容的提问来源于stack exchange,提问作者Marrows
相关产品推荐
相关产品推荐

