这是来自天气的openAPI(openAPI = https://www.data.go.kr/)
Map<String, Object> restResult = restWeatherApi(apiMap);
我从open API
收到了这样的回复。
响应结果
{
response=
{header=
{resultCode=00, resultMsg=NORMAL_SERVICE},
body=
{dataType=JSON,
items={item=[{baseDate=20230103,
baseTime=1400, category=TMP,
fcstDate=20230103, fcstTime=1500,
fcstValue=0, nx=61.0, ny=127.0},
{baseDate=20230103, baseTime=1400, category=UUU, f
cstDate=20230103, fcstTime=1500, fcstValue=2.1,
nx=61.0, ny=127.0}, {baseDate=20230103,
baseTime=1400, category=VVV, fcstDate=20230103,
fcstTime=1500, fcstValue=-1.2, nx=61.0, ny=127.0},
{baseDate=20230103, baseTime=1400, category=VEC,
fcstDate=20230103, fcstTime=1500, fcstValue=300,
nx=61.0, ny=127.0}, {baseDate=20230103,
baseTime=1400, category=WSD, fcstDate=20230103,
fcstTime=1500, fcstValue=2.4, nx=61.0, ny=127.0},
{baseDate=20230103, baseTime=1400, category=SKY,
fcstDate=20230103, fcstTime=1500, fcstValue=1, nx=61.0, ny=127.0}, {baseDate=20230103, baseTime=1400, category=PTY, fcstDate=20230103, fcstTime=1500, fcstValue=0, nx=61.0, ny=127.0}, {baseDate=20230103, baseTime=1400, category=POP, fcstDate=20230103, fcstTime=1500, fcstValue=0, nx=61.0, ny=127.0}, {baseDate=20230103, baseTime=1400, category=WAV, fcstDate=20230103, fcstTime=1500, fcstValue=0, nx=61.0, ny=127.0}, {baseDate=20230103, baseTime=1400, category=PCP, fcstDate=20230103, fcstTime=1500, fcstValue=강수없음, nx=61.0, ny=127.0}]}, pageNo=1.0, numOfRows=10.0, totalCount=700.0}}}
我想要数据。
String str = restResult.get("response");
但是错误类似于java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.String
我想使用和操作此LinkedTreeMap中的所有数据。如何处理此数据?
1条答案
按热度按时间smdncfj31#
TL;医生
打电话给
toString
。LinkedTreeMap
不是String
(警告:我不使用GSON。)
对
restResult.get
的调用显然返回了对com.google.gson.internal.LinkedTreeMap
对象的引用。您将该引用赋给了一个声明为保存
String
对象引用的变量。LinkedTreeMap
对象 * 不是 *String
对象。因此,您的赋值尝试是不正确的,无效的。编译器检测到不正确的代码,并标记了错误。
根据the source code,
LinkedTreeMap
类扩展了java.util.AbstractMap
。请将您的行更改为如下内容:或者:
然后你可以查询键-值对,或者通过调用
Map#toString
生成表示整个Map内容的文本,你可以跳过中间的Map
步骤: