1

我有以下代码

import com.google.gson.Gson;

/**
 *
 * @author yccheok
 */
public class JavaApplication18 {

    public static class Holder {
        public Object value;
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Gson gson = new Gson();
        Integer i = new Integer(123);

        Holder holder = new Holder();
        holder.value = i;

        String json = gson.toJson(holder);
        System.out.println(json);
        Holder newHolder = gson.fromJson(json, Holder.class);

        System.out.println(newHolder.value.getClass());
    }
}

输出是

{"value":123}
class java.lang.Double

我希望 Gson 在对 Object 类型执行序列化/反序列化时可以保留类型信息。有什么优雅的方法可以实现吗?或者,这是不可能的?

4

2 回答 2

0

试试这个方法

   JsonObject  element = gson.fromJson (json, JsonObject.class);
    if(element.get("value") instanceof JsonPrimitive   )
            System.out.println("true");
    else
         System.out.println("false");
于 2013-10-22T16:53:32.060 回答
0

JSON 只有一种数字类型;它从 JavaScript 复制 Number 类型,该类型与 Java Double 类型具有相同的值。

您必须通过使用更具体的value变量类型或其他形式的显式类型匹配来向 Gson 解析器提供更明确的信息。

于 2013-10-22T18:35:00.417 回答