Gson を使用したカスタム JSON 逆シリアル化
Java では、Gson は JSON 解析およびシリアル化用の人気のあるライブラリです。複雑な JSON 構造を扱う場合、特定のデータ形式を処理するためにカスタム デシリアライザーを定義する必要がある場合があります。
User クラスがあり、ユーザー オブジェクトを含む JSON リストを受け取る次の例を考えてみましょう。
public class User { int id; String name; Timestamp updateDate; }
[{"id":1,"name":"Jonas","update_date":"1300962900226"}, {"id":5,"name":"Test","date_date":"1304782298024"}]
カスタム デシリアライザーを定義するには、JsonDeserializer インターフェイスを実装し、デシリアライズ メソッドを提供します。ただし、質問で提供されているコードにはいくつかの問題があります。
より適切なアプローチには、フィールド名前付けポリシーとカスタム デシリアライザーに対する Gson の組み込みサポートを活用することが含まれます。これにより、手動解析の必要性が減り、逆シリアル化プロセスが簡素化されます:
GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES); gsonBuilder.registerTypeAdapter(Timestamp.class, new TimestampDeserializer());
カスタム デシリアライザーでは、逆シリアル化メソッドが JSON 値を文字列として解析し、Timestamp オブジェクトを作成します:
class TimestampDeserializer implements JsonDeserializer<Timestamp> { @Override public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { long time = Long.parseLong(json.getAsString()); return new Timestamp(time); } }
カスタム デシリアライザーを登録すると、Gson は update_date のデシリアライゼーションをタイムスタンプとして自動的に処理します。 TimestampDeserializer で定義されたロジック。
このアプローチは、Gson を使用したカスタム JSON 逆シリアル化のための、より簡潔でエラーが発生しやすい方法を提供します。
以上がJava の Gson を使用してカスタム JSON 構造を効率的に逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。