English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Wie kann man in Java Gson zur Implementierung eines benutzerdefinierten JsonAdapter verwenden?

 @JsonAdapte Kommentare können auf der Ebene des Felds oder der Klasse verwendet werden, um GSON zu spezifizieren. DieTypeAdapterDie Klasse kann verwendet werden, um Java-Objekte in JSON zu konvertieren. Standardmäßig konvertiert die Gson-Bibliothek Anwendungs-Klassen in JSON, indem sie eingebaute Typen-Adapter verwenden, aber wir können es durch Bereitstellung eigener Typen-Adapter überschreiben.

Syntax

@Retention(value=RUNTIME)
@Target(value={TYPE,FIELD})
public @interface JsonAdapter

Beispiel

import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
public class JsonAdapterTest {
   public static void main(String[] args) {
      Gson gson = new Gson();
      System.out.println(gson.toJson(new Customer()));
   }
}
//Kundengruppe
class Customer {
   @JsonAdapter(CustomJsonAdapter.class)
   Integer customerId = 101;
}
//CustomJsonAdapter Klasse
class CustomJsonAdapter extends TypeAdapter<Integer> {
   @Override
   public Integer read(JsonReader jreader) throws IOException {
      return null;
   }
   @Override
   public void write(JsonWriter jwriter, Integer customerId) throws IOException {
      jwriter.beginObject();
      jwriter.name("customerId");
      jwriter.value(String.valueOf(customerId));
      jwriter.endObject();
   }
}

Ausgaberesultat

{"customerId":{"customerId":"101"}}