LoginSignup
4
4

More than 5 years have passed since last update.

Vert.xで自作エンティティクラスをJSONにシリアライズする

Posted at

Vert.xって「基本JSONでイベント送信する」みたいなムードが漂っていますが、
Vert.xのJSONはorg.vertx.java.core.json.JsonObject(またはJsonArray)という、Vert.x独自のJSONクラスです。
そのため、自分が作ったエンティティを送信したい場合は、JsonObjectに変換する必要が出てきます。

そんなときに使うのがコレ。
org.vertx.java.core.json.impl.Jsonクラスにシリアライズ/デシリアライズするメソッドが用意されています。
用意されているのは、以下のstaticメソッド。endoceでObject→JSON文字列に、decodeValueでJSON文字列→Objectに変換できます。

  • public static String encode(Object obj) throws EncodeException
  • public static String encodePrettily(Object obj) throws EncodeException
  • public static T decodeValue(String str, Class<?> clazz) throws DecodeException

シグネチャで見たままに動きます。
例えば、MyEntityクラスをJsonObjectにする場合は、以下のように書きます。

        MyEntity entity = ...
        JsonObject json = new JsonObject(Json.encode(entity));

これで、自分が作ったエンティティからJsonObjectに変換できました。
このJsonObjectをEventBusに送信してあげれば、OK。
ちなみに、Vert.xは内部でJacksonを使っています。

※でも、これだと、エンティティ→String→JsonObjectという変換になっています。直接、エンティティ→JsonObjectとできないのかな。。。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4