ObjectMapperとは
ObjectMapperは、Jacksonライブラリの主要なアクタークラスです。 ObjectMapperクラスは、基本的なPOJO(プレーンオールドJavaオブジェクト)、または汎用のJSONツリーモデル(JsonNode)との間でJSONを読み書きする機能と、変換を実行するための関連機能を提供します。
また、さまざまなスタイルのJSONコンテンツの両方で動作し、ポリモーフィズムやオブジェクトIDなどのより高度なオブジェクトの概念をサポートするように高度にカスタマイズできます。 ObjectMapperは、より高度なObjectReaderおよびObjectWriterクラスのファクトリーとしても機能します。
※簡単にいうと?
JacksonのObjectMapperはJava Objec↔Jsonパーシングを簡単にしてくれるクラスです。
使ってみた!
今回、WebSocketを利用してチャットアプリケーションを作成していますが、
実際、使っている箇所のソースコードを共有します。
@Slf4j
@RequiredArgsConstructor
@Service
public class ChatService {
// 宣言
private final ObjectMapper objectMapper;
private Map<String, ChatRoom> chatRooms;
@PostConstruct
private void init() {
chatRooms = new LinkedHashMap<>();
}
public List<ChatRoom> findAllRoom() {
return new ArrayList<>(chatRooms.values());
}
public ChatRoom findRoomById(String roomId) {
return chatRooms.get(roomId);
}
public ChatRoom createRoom(String name) {
String randomId = UUID.randomUUID().toString();
ChatRoom chatRoom = ChatRoom.builder()
.roomId(randomId)
.name(name)
.build();
chatRooms.put(randomId, chatRoom);
return chatRoom;
}
public <T> void sendMessage(WebSocketSession session, T message) {
try {
// パーシング
session.sendMessage(new TextMessage(objectMapper.writeValueAsString(message)));
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
結果
正常にJsonが戻ってきますね。
※ちなみに、WebSocketテストで使っているのは以下です。
Simple WebSocket Clinet
※ソースコードは以下となります。
https://github.com/twan65/websocket-exam