Generate JSON data sử dụng Java class, được annotate với JAXB annotation, sử dụng thư viện Jackson

Mặc dù thông thường các class Java được annotate sử dụng các annotation của thư viện JAXB, sẽ được sử dụng để generate các XML data. Thế nhưng, trong một số trường hợp, các bạn sẽ có nhu cầu generate JSON data thay vì XML sử dụng các Java class này. Để làm được điều này, các bạn có thể sử dụng thư viện Jackson với jackson-module-jaxb-annotations. cho namespace Java EE, hoặc jackson-module-jakarta-xmlbind-annotations cho namespace Jakarta EE. Cụ thể sẽ làm như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!

Mình sẽ tạo mới một Maven project:

để làm ví dụ.

Mình sẽ sử dụng namespace Jakarta EE nên mình sẽ khai báo JAXB và jackson-module-jakarta-xmlbind-annotations dependency như sau:

Để làm ví dụ, mình có class Student được annotate với các annotations của thư viện JAXB như sau:

Mình sẽ khởi tạo một đối tượng Student với các thông tin như sau:

Để generate thông tin của đối tượng Student ở định dạng JSON, đầu tiên, mình cũng sẽ khởi tạo đối tượng ObjectMapper như sau:

Tiếp theo, chúng ta cần enable support Jakarta XML Binding cho đối tượng ObjectMapper sử dụng class JakartaXmlBindAnnotationIntrospector, bằng một trong 2 cách sau:

hoặc:

và bây giờ, chúng ta sẽ sử dụng phương thức writeValueAsString() của đối tượng ObjectMapper để chuyển đổi đối tượng Student sang chuỗi JSON:

Toàn bộ code của mình như sau:

Kết quả khi mình chạy ví dụ của mình như sau:

Add Comment