问题描述
在将 json 串转为 Map<String, Object> 时
内部的类似 page=1, limit=10 等int类型数据会被转换为 Double,输出 page=1.0, limit = 10.0
而类似 timestamp=1231231231231 等 long 类型也会被转换为 Double,输出 1exxxx(科学计数法)
解决办法
Gson 2.8.4 包含的这个提交解决了这个问题,它允许我们指定数字类型如何被转换。
Gson gson = new GsonBuilder()
.setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)
.create();
List<Object> actual = gson.fromJson("[null, 10, 10.0]", new TypeToken<List<Object>>() {}.getType());
List<? extends Number> expected = Arrays.asList(null, 10L, 10.0);
assertEquals(expected, actual);
网友评论