簡體   English   中英

Gson:如果序列化/反序列化目標是Object,是否可以保留類型信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM