我有以下代码
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在对象类型上执行序列化/反序列化时可以保留类型信息。有没有任何优雅的方式来实现这一目标?或者,这是不可能的?
答案 0 :(得分:0)
试试这种方式
JsonObject element = gson.fromJson (json, JsonObject.class);
if(element.get("value") instanceof JsonPrimitive )
System.out.println("true");
else
System.out.println("false");
答案 1 :(得分:0)
JSON只有一种数字类型;它从JavaScript复制Number类型,此类型与Java Double类型具有相同的值。
您必须通过使用value
变量的更具体类型或其他形式的显式类型匹配,向Gson解析器提供更多显式信息。