您的位置:首页 > Web前端 > JavaScript

Gson转换json串到Map,Key值是String还是设定值(如Long)?

2016-04-07 11:06 483 查看
开发中遇到一个小问题,常用的json String转换为java对象的写法如下:

Gson gson = new Gson();

PublicServiceResponse<Map<Long, List<ActivityAPIBO>>> res = new  PublicServiceResponse<Map<Long, List<ActivityAPIBO>>>();

resMap = gson.fromJson(jsonString, res.class)

当拿到resMap是使用Long类型的ID作为key去取得结果为空,经调试发现使用String类型的ID取值时可以正确返回。

也就是说转换时虽然指定的了Map的Key为Long类型,Gson还是默认解析为String类型的。

测试了fastJson结果相同。

Gson的解决办法,引入新的类TypeToken:
http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/reflect/TypeToken.html
TypeToken<PublicResp<Map<Long, List<JavaBean>>>> type =     new TypeToken<PublicResp<Map<Long, List<JavaBean>>>>(){};

  res = gson.fromJson(html, type.getType());

此时,Key为Long型了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: