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

使用Retrofit搭配Moshi调用USGS地震接口无结果且类型匹配报错

问题根因

报错Expected BEGIN_ARRAY but was BEGIN_OBJECT at path $的核心原因是接口返回的JSON根节点是对象类型,但是你在UsgsApiService中定义的getQuakes方法返回值为List<Quake>,Moshi解析时预期根节点是数组,与实际返回结构不匹配导致解析失败。

你调用的USGS地震接口返回的GeoJSON格式根结构就是单个对象,你定义的Quake实体类已经通过features字段匹配了根对象下的地震列表属性,完全符合返回结构要求,只需要修改接口返回类型即可。

修改方案

将UsgsApiService中getQuakes方法的返回值从List<Quake>改为Quake,修改后的代码如下:

interface UsgsApiService {
    @GET("fdsnws/event/1/query")
    suspend fun getQuakes(
        @Query("format") format: String = "geojson",
        @Query("starttime") starttime: String = "2021-01-01",
        @Query("endtime") endtime: String = "2021-08-24",
        @Query("minmagnitude") minmagnitude: String = "4",
        @Query("latitude") latitude: String = "24.0162182",
        @Query("longitude") longitude: String = "90.6402874",
        @Query("maxradiuskm") maxradiuskm: String = "400"
    ): Quake
}

修改完成后,调用接口拿到Quake对象后,直接取其features属性即可获取全部地震数据列表。


内容的提问来源于stack exchange,提问作者Raw Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:57:03