[英]Gson : Is there a way to preserve type information if serialization/deserialization target is an Object
我有以下代碼
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類型執行序列化/反序列化時可以保留類型信息。 有沒有達到此目的的優雅方法? 還是不可能?
試試這個
JsonObject element = gson.fromJson (json, JsonObject.class);
if(element.get("value") instanceof JsonPrimitive )
System.out.println("true");
else
System.out.println("false");
JSON只有一種數值類型; 它從JavaScript復制Number類型,並且此類型的值與Java Double類型的值相同。
您將必須通過為value
變量使用更特定的類型或某種其他形式的顯式類型匹配,來向Gson解析器提供更顯式的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.