java - 为什么Gson会反序列化1为1.0?

标签 java json gson

Gson gson = new Gson();
System.out.println(gson.fromJson("1", Object.class));    //output:1.0
System.out.println(gson.fromJson("1", String.class));    //output:1
System.out.println(gson.fromJson("1", Integer.class));   //output:1

我正在尝试自定义反序列化器来修复它,但仍然无法正常工作:

Gson gson = new GsonBuilder().registerTypeAdapter(Object.class,new JsonDeserializer<Object>() {
    @Override
    public Object deserialize(JsonElement json, Type typeOfT,JsonDeserializationContext context)throws JsonParseException {
        return json.getAsInt();
    }
}).create();
System.out.println(gson.fromJson("1", Object.class));   //still 1.0

我是不是做错了什么?

最佳答案

JSON 中没有整数。 1.0 和 1 是一样的,除了 1.0 是显式的。

关于java - 为什么Gson会反序列化1为1.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12283863/

相关文章:

json - 如何将 json 模式转换为 avro 模式

android - GSON:期望一个字符串,但是是 BEGIN_OBJECT?

java - Gson 解析具有通用项的类

scala - 在 Scala 中使用 Gson 序列化/反序列化案例对象

java - 有谁知道如何实现类似于Google App Engine 的白名单类访问方法?

java - 有hashCode()为什么Java还需要equals()?

java - 多边形相交失败,碰撞 "size"太大

java - 如何对存储在 JTextPanes(JList 中的单元格)中的文本进行自动换行

android - Json从Retrofit到SQLite数据库

JsonSyntaxException Gson : Expected BEGIN_OBJECT but was STRING