美文网首页
如何避免 Gson 将 JsonString 中的 int lo

如何避免 Gson 将 JsonString 中的 int lo

作者: 小强开学前 | 来源:发表于2022-03-22 00:25 被阅读0次

问题描述

在将 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);

相关文章

网友评论

      本文标题:如何避免 Gson 将 JsonString 中的 int lo

      本文链接:https://www.haomeiwen.com/subject/clbxjrtx.html