8

「type」という名前のキーを含む JSON があります。includeこのキーには、またはの値を指定できますexclude。Json をデシリアライズしないように Gson を構成し、キー値が の場合にオブジェクトを作成したいと考えていますexclude

カスタムデシリアライザーを作成し、適切なものをチェックし、オブジェクトを作成するかどうかを確認できます。ただし、ある種の除外戦略を使用する別の方法があるかどうかはわかりませんでした。

私が概説した例は単純化しすぎています。私の実際の JSON には、さらに多くのフィールドが含まれています。

// Deserialize me
{     
   "type" : "include"
}

// Skip over me, and do not deserialize
{
   "type" : "exclude"
}
4

2 に答える 2

0

ここでは役に立たないと思いExclusionStrategyます。インスタンスではなくクラスで動作し、インスタンスが処理される時点で、その評価の結果が表示されます (コードを確認したい場合は、 を参照してくださいReflectiveTypeAdapterFactory.BoundField)。

于 2012-08-01T13:55:10.423 に答える
0

これはあなたを助けるかもしれません...

Gson gson = new Gson();
JsonObject jsonObj = gson.fromJson (jsonStr, JsonElement.class).getAsJsonObject();

// Just read the required field
if(jsonObj.get("type").getAsString().equals("include")) {
    // Continue parsing/deserializing other details
} else {
    // Skip
}

Gson APIドキュメントについてはこれを参照できます

于 2014-02-10T13:13:58.340 に答える