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

使用Gson fromJson解析后返回null,请问问题出在哪里?

问题原因

你的JSON结构与数据类Countries不匹配:

  • 你的JSON字符串的根对象就是一个Map<String, List<String>>(直接是国家到城市列表的键值对)
  • 但数据类Countries定义了一个名为countries的字段,Gson会尝试在JSON中寻找顶级键"countries"来匹配这个字段,而你的JSON里根本没有这个键,因此解析后countries字段只能是null。
解决方案

有两种可行的解决方式,根据你的需求选择:

方式1:直接解析为Map类型(推荐,无需额外嵌套)

去掉外层的Countries数据类,直接将JSON解析成目标Map类型:

val countriesMap: Map<String, List<String>> = Gson().fromJson(
    jsonString,
    object : TypeToken<Map<String, List<String>>>() {}.type
)
println(countriesMap)

这样就能直接得到国家与城市列表的映射关系,输出结果符合预期。

方式2:让JSON结构与数据类匹配

如果必须保留Countries数据类,需要调整JSON结构,给整个内容套上"countries"顶级键:

{
  "countries": {
    "Afghanistan": [
      "Herat",
      "Kabul",
      "Kandahar",
      "Molah",
      "Rana",
      "Shar",
      "Sharif",
      "Wazir Akbar Khan"
    ],
    "Albania": [
      "Elbasan",
      "Petran",
      "Pogradec",
      "Shkoder",
      "Tirana",
      "Ura Vajgurore"
    ]
  }
}

修改后,原有的解析代码就能正常工作,Gson会找到"countries"键并将对应的值赋值给数据类的countries字段。

内容的提问来源于stack exchange,提问作者Ryder Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:01:21