前言:当使用gson进行json字符串转换成Object或Map时,数据中的所有数值型数据都会被转换成Double类型,即:0被转换成0.0,对此提供以下解决方案:
public class ObjectTypeAdapterRewrite extends TypeAdapter { @Override public Object read(JsonReader in) throws IOException { JsonToken token = in.peek(); switch (token) { case BEGIN_ARRAY: List list = new ArrayList<>(); in.beginArray(); while (in.hasNext()) { list.add(read(in)); } in.endArray(); return list; case BEGIN_OBJECT: Map map = new LinkedTreeMap<>(); 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) { try { return (int) lngNum; } catch (Exception e) { 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 { } }
Gson gson = new GsonBuilder().registerTypeAdapter(new TypeToken>(){}.getType(), new ObjectTypeAdapterRewrite()).create();
上一篇 【Redis】《Redis 开发与运维》笔记-Chapter9-哨兵
下一篇 idea如何向两个gitlab提交代码
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号