Jackson API は、JSON データを処理するための多くのメソッドを提供します。 Jackson API を使用すると、Java オブジェクトを JSON 文字列に変換し、JSON 文字列からオブジェクトを再構築できます。 StdSerializer クラスを使用してカスタム シリアライザーを実装し、serialize(T value, JsonGenerator gen, SerializerProvider Provider) メソッドをオーバーライドする必要があります。最初のパラメーター値はシリアル化される値を表し (空にすることはできません)、2 番目のパラメーター gen はは、結果の Json コンテンツを出力するために使用されるジェネレーターを表し、3 番目のパラメーターのプロバイダーは、オブジェクト値をシリアル化するために使用されるシリアライザーを取得するために使用できるプロバイダーを表します。
public abstract void serialize(T value, JsonGenerator gen, SerializerProvider provider) throws IOException
import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.module.*; import com.fasterxml.jackson.databind.ser.std.StdSerializer; public class JacksonSerializeTest { public static void main(String[] args) throws Exception { JacksonSerializeTest test = new JacksonSerializeTest(); test.serialize(); } public void serialize() throws Exception { User user = new User(); user.setFirstName("Raja"); user.setLastName("Ramesh"); ObjectMapper mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addSerializer(User.class, new UserSerializer()); mapper.registerModule(module); String jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user); // pretty print System.out.println(jsonStr); } } // User class class User implements Serializable { private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } // UserSerializer class class UserSerializer extends StdSerializer<User> { public UserSerializer() { this(null); } public UserSerializer(Class<User> t) { super(t); } <strong> </strong>@Override public void serialize(User value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeStringField("firstName", value.getFirstName()); jgen.writeStringField("lastName", value.getLastName()); jgen.writeEndObject(); } }
{ "firstName" : "Raja", "lastName" : "Ramesh" }
以上がJackson ライブラリを使用して Java でカスタム シリアライザーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。