Gson 用カスタム JSON デシリアライザー
カスタム構造を持つ JSON データを受信する場合、Gson のデフォルトのデシリアライズ プロセスでは十分ではない場合があります。このような場合、カスタム デシリアライザーが必要です。
ユーザーを表す次の Java クラスを考えてみましょう:
public class User { int id; String name; Timestamp updateDate; }
ユーザーのリストを表す JSON 構造:
[{"id":1,"name":"Jonas","update_date":"1300962900226"}, {"id":5,"name":"Test","date_date":"1304782298024"}]
この JSON をユーザー インスタンスに逆シリアル化するには、カスタム デシリアライザーを使用できます。定義:
import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import java.lang.reflect.Type; import java.sql.Timestamp; public class UserDeserializer implements JsonDeserializer<User> { @Override public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { long time = json.getAsJsonPrimitive().getAsLong(); return new User( json.get("id").getAsInt(), json.get("name").getAsString(), new Timestamp(time)); } }
このデシリアライザーは、指定されたフィールド名とカスタム タイムスタンプ解析を考慮して、JSON をユーザー インスタンスに解析します。
このデシリアライザーを Gson インスタンスに適用するには、 registerTypeAdapter メソッド:
GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(User.class, new UserDeserializer()); Gson gson = gsonBuilder.create();
これで、JSON を次のリストに逆シリアル化できます。変更された Gson インスタンスを使用するユーザー インスタンス。
以上がGson 用のカスタム JSON デシリアライザーを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。