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

JsonObject操作时getInt/getString失效仅识别getAsInt/getAsString且成员名不识别

问题解决方案

问题1:getInt、getString方法无法调用,仅能识别getAsInt、getAsString

  • 原因:你当前使用的是com.google.gson.JsonObject(Gson库的JsonObject实现),该类本身未提供getInt()、getString()这类直接按类型取值的API,你记忆中的这类API属于org.json库的JSONObject类,二者是不同JSON解析库的实现,API不通用。
  • 解决方案:
    • 若继续使用Gson库,统一使用getAsInt()、getAsString()这类API即可,标准用法为:jsonObject.get("字段名").getAsInt() / jsonObject.get("字段名").getAsString()
    • 若需要使用getInt()、getString()API,切换依赖到org.json库,将所有导入的JsonObject包路径替换为org.json.JSONObject即可。

问题2:weather_state_name成员无法识别的问题

你给出的代码存在API调用错误,getAsString()是JsonElement的无参方法,不属于JsonObject的带参方法,需要先通过get("字段名")拿到对应的JsonElement实例后再调用类型转换方法。
修正后的代码如下:

JsonObject first_day_from_api = (JsonObject) consolodated_weather_list.get(0);
// 先获取对应字段的JsonElement实例,再调用getAsString完成类型转换
first_day.setWeather_state_name(first_day_from_api.get("weather_state_name").getAsString());

如果修正后仍提示找不到该字段,按以下顺序排查:

  • 检查接口返回的JSON结构中,consolidated_weather数组的元素下是否真的存在weather_state_name字段,注意拼写、大小写、下划线是否完全匹配
  • 排查接口返回是否存在数据异常,比如该字段为null或者对应节点不是字符串类型,这种情况可以增加非空判断避免空指针:
JsonElement weatherStateEle = first_day_from_api.get("weather_state_name");
if (weatherStateEle != null && !weatherStateEle.isJsonNull()) {
    first_day.setWeather_state_name(weatherStateEle.getAsString());
} else {
    // 可自行设置默认值或者做异常处理
    first_day.setWeather_state_name("");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:54:09