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とできないのかな。。。