10

jsonオブジェクトをJavaBeanに逆シリアル化しようとしています。object私が直面している主な問題は、json文字列のフィールドが、潜在的に正しいjsonオブジェクトを含んでいる場合でも、プレーン文字列として扱いたいということです。jsonの構造は次のようになります。

{
    "type":"user",
    "object":{
        "id":"1", 
        ...}
}

object値がオブジェクトに逆シリアル化されないように、値を無視するようにgsonに指示するにはどうすればよいですか?Stringフィールドから型を取得したら、適切な逆シリアル化を処理できるように、Beanのプレーンフィールドにのみマップする必要がありtypeます。

4

2 に答える 2

12

タイプ JsonObject として宣言するだけです

class ExampleJsonModel {
    @SerializedName("type")
    public String type;

    @SerializedName("object")
    public JsonObject object;
}
于 2014-05-28T18:30:02.333 に答える
1

あなたの問題が解決したかどうかはわかりません。私は同様の質問に遭遇しました、そしてここに私がそれをどのように解決したかがあります:

JsonDeserializerを使用すると、独自のアダプターを作成して、それを逆シリアル化できます**:

class JavaBeanDeserializer implements JsonDeserializer<JavaBeanObject>() {
    public JavaBeanObject fromJson(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    // return JavaBeanObject built using your logic.
}

ビルドするときは、 JavaBeanDeserializerをGsonオブジェクトに登録する必要があります。

Gson gson = new GsonBuilder().registerTypeAdapter(JavaBeanObject.class, new JavaBeanDeserializer()).create();
于 2011-04-12T07:28:54.850 に答える