2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2018.11.27
プログラミングJacksonで独自のJSONシリアライズをする
こんにちはH.Rです。
今回はJavaのJSONライブラリであるJacksonのCustomSerializerを使って独自実装のシリアライズをします。
CustomSerializerを使えば柔軟なJSONを作成することができます。
紹介する前に通常のシリアライズ例をあげます。
簡単なUserクラスもとにシリアライズします。
public class User { public int id; public String name; } User user = new User(1, "theUser"); String serialized = new ObjectMapper().writeValueAsString(user);
実行すると
{ "id": 1, "name": "theUser" }
となります。
それではCustomSerializerを使ったシリアライズをします。
Userクラスを下記のように変更してフルネームをJSONにするようにカスタムします。
@JsonSerialize(using = UserSerializer.class) public class User { private int id; private String firstName; private String lastName; public User(int id, String firstName, String lastName) { this.id = id; this.firstName = firstName; this.lastName = lastName; } public String getId() { return id; } public String getFullName() { return fistName + " " + lastName; } }
@JsonSerialize
は後ほど説明します。
次にUserクラス用のカスタムシリアライザを作成します。
public class UserSerializer extends SrdSerializer<User> { public UserSerializer() { this(null); } public UserSerializer(Class<User> t) { super(t); } @Override Public void serialize(User value, JsonGenerator gen, SerializerProvider provider) throws IOException { gen.writeStartObject(); gen.writeNumberField("id", value.getId()); gen.writeStringField("fullName", value.getFullName()); gen.writeEndObject(); } }
それではシリアライズを実行します。
User user = new User(1, "John", "Doe"); String serialized = new ObjectMapper().writeValueAsString(user);
{ "id": 1, "fullName": "John Doe" }
簡単にできました。
@JsonSerialize
で指定したカスタムシリアライザを実行時に呼び出してシリアライズを行っています。
これによりメソッドを使ったJSONを作成することができました。
@JsonSerialize
はインタフェースに定義する事ができ、実装クラスごとにより柔軟なシリアライズを行うことができます。
以上CustomSerializerを使ったシリアライズを紹介しました。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索