解决Gson解析数据用map接收时int自动转化为double问题
来源:互联网 发布:mac怎么建文本文件 编辑:程序博客网 时间:2024/06/05 19:26
Gson可以将json字符串转换成map, 但是在转成map时, 原json字符串中的int , long型的数字会默认被转换成double类型 , 导致数字会多一个小数点 , 如 1 会转成 1.0。
我们可以用自定义TypeAdapter
替代Gson默认的adapter解决:
Gson gson = new GsonBuilder().registerTypeAdapter(new TypeToken<Map<String, Object>>() { }.getType(), new GsonTypeAdapter()).create(); HLJHttpResponse response = gson.fromJson(result, HLJHttpResponse.class);
GsonTypeAdapter代码:
public class GsonTypeAdapter extends TypeAdapter<Object>{ @Override public Object read(JsonReader in) throws IOException { // 反序列化 JsonToken token = in.peek(); switch (token) { case BEGIN_ARRAY: List<Object> list = new ArrayList<Object>(); in.beginArray(); while (in.hasNext()) { list.add(read(in)); } in.endArray(); return list; case BEGIN_OBJECT: Map<String, Object> map = new HashMap<String, Object>(); in.beginObject(); while (in.hasNext()) { map.put(in.nextName(), read(in)); } in.endObject(); return map; case STRING: return in.nextString(); case NUMBER: /** * 改写数字的处理逻辑,将数字值分为整型与浮点型。 */ double dbNum = in.nextDouble(); // 数字超过long的最大值,返回浮点类型 if (dbNum > Long.MAX_VALUE) { return dbNum; } // 判断数字是否为整数值 long lngNum = (long) dbNum; if (dbNum == lngNum) { return lngNum; } else { return dbNum; } case BOOLEAN: return in.nextBoolean(); case NULL: in.nextNull(); return null; default: throw new IllegalStateException(); } } @Override public void write(JsonWriter out, Object value) throws IOException { // 序列化不处理 }}
阅读全文
0 0
- 解决Gson解析数据用map接收时int自动转化为double问题
- gson int long自动转换为double
- Gson将字符串转map时,int默认为double类型
- Gson将字符串转map时,int、long默认为double类型
- Gson解决前后端数据接收问题
- springMvc直接接收json数据自动转化为Map<String,String>
- 解决fastjson、Jackson、Gson解析Json数据时,key为Java中关键字无法解析的问题
- gson泛型 解决所有数据解析问题
- 将string转化为int、double
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
- GSON封装(解决数字转成double问题)
- JAVA解析JSON数据转化为Map对象
- 解决Gson解析Json时,Json-中Key为Java关键字的问题
- 解决Gson解析Json时,Json 中Key为Java关键字的问题
- 安卓使用Gson转化为Json数据出现中文乱码的解决方式
- C++将string转化为int或者double
- 用fastjson解析json数据顺序问题,用gson完美解决
- Gson解析Map格式json数据
- oracle--7.子查询
- Js中的回调
- Unreachable code
- 使用vue-cli+axios配置代理进行跨域访问数据
- Viewpager删除当前页面并跟新
- 解决Gson解析数据用map接收时int自动转化为double问题
- 如何绘制用例图
- table表单边框样式设计
- APDU SW应答码处理,错误应答码解释
- 20. Valid Parentheses
- shell及linux基础
- java开发腾讯AI,共探人工智能
- 【米么推文素材】汇编语言示例 求斐波那契数
- Go语言解析Html