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 が型情報を保持できることを願っています。そうするためのエレガントな方法はありますか?または、それは不可能ですか?

4

2 に答える 2

0

JSON には数値型が 1 つしかありません。JavaScript から Number 型をコピーし、この型は Java Double 型と同じ値を持ちます。

value変数のより具体的な型を使用するか、明示的な型一致の他の形式を使用して、Gson パーサーにより明示的な情報を提供する必要があります。

于 2013-10-22T18:35:00.417 に答える