Java中如何正确选取复杂JSON数组中的元素?
问题解决步骤
1. 先修复JSON语法错误
你提供的JSON存在语法问题,无法被正常解析,具体问题:
- 键名
0未加双引号,JSON要求所有键必须是带双引号的字符串 - 键值对格式错误,
0:后直接跟"info":{...}不符合JSON结构
根据代码意图,提供两种修正方案:
方案A:若user数组元素是包含0键的对象
{ "info": "info", "user": [ { "0": { "info": { "name": "user 1" } } } ] }
方案B:若user数组元素直接是包含info的对象(更合理的结构)
{ "info": "info", "user": [ { "info": { "name": "user 1" } } ] }
2. 修正代码逻辑
你的代码错误地多次使用getJSONArray(),但实际上user数组的元素是JSONObject,info也是JSONObject,并非数组。
对应方案A的代码
JSONObject jsonObject = new JSONObject(json_string); System.out.println(jsonObject.getJSONArray("user") .getJSONObject(0) .getJSONObject("0") .getJSONObject("info") .getString("name"));
对应方案B的代码(更简洁)
JSONObject jsonObject = new JSONObject(json_string); System.out.println(jsonObject.getJSONArray("user") .getJSONObject(0) .getJSONObject("info") .getString("name"));
内容的提问来源于stack exchange,提问作者Igor Ostapenko
相关产品推荐
相关产品推荐

