如何使用GSON从JSON中提取数组指定位置的对象字段值
原因说明
Gson原生JsonObject.get()方法仅支持传入当前对象层级的直接键名做匹配,不支持任何路径表达式语法。你尝试的带.、[]、/的写法属于JSONPath语法,传入后会被当成完整键名在根节点下查找,根节点不存在这类名称的键,因此无法获取目标值。
正确实现方式
需要分层解析JSON结构,注意JSON数组下标从0开始计数,你要的第二位员工(id=2)对应数组索引为1,参考代码如下:
JsonObject json = new Gson().fromJson(responseText, JsonObject.class); // 1. 获取根节点下的data数组 JsonArray dataList = json.getAsJsonArray("data"); // 2. 取索引为1的元素,也就是第二位员工对象 JsonObject targetEmp = dataList.get(1).getAsJsonObject(); // 3. 获取employee_name字段的字符串值 String empName = targetEmp.get("employee_name").getAsString(); System.out.println(empName); // 输出结果:Garrett Winters
注意事项
- 不要直接用索引2取值,索引2对应的是第三位员工Ashton Cox
- 从Json结构中取到元素后,需要先转换为对应的类型(数组转
JsonArray、对象转JsonObject、基础值转对应字符串/数值类型),直接调用get方法会抛出类型不匹配异常
内容的提问来源于stack exchange,提问作者lorenlai
相关产品推荐
相关产品推荐

