ホームページ  >  記事  >  Java  >  Jackson ライブラリを使用して Java でカスタム シリアライザーを実装するにはどうすればよいですか?

Jackson ライブラリを使用して Java でカスタム シリアライザーを実装するにはどうすればよいですか?

王林
王林転載
2023-09-12 21:37:021372ブラウズ

Jackson ライブラリを使用して Java でカスタム シリアライザーを実装するにはどうすればよいですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。