diff --git a/jsonb/pom.xml b/jsonb/pom.xml
index c61e1ac285..5058d89c31 100644
--- a/jsonb/pom.xml
+++ b/jsonb/pom.xml
@@ -98,9 +98,9 @@
1.0
1.1.3
1.0
- 1.0
+ 1.0.1
1.1.2
4.1
-
+
\ No newline at end of file
diff --git a/jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java b/jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java
new file mode 100644
index 0000000000..dfab2eb0d2
--- /dev/null
+++ b/jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java
@@ -0,0 +1,26 @@
+package com.baeldung.adapter;
+
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.bind.adapter.JsonbAdapter;
+
+import com.baeldung.jsonb.Person;
+
+public class PersonAdapter implements JsonbAdapter {
+
+ @Override
+ public JsonObject adaptToJson(Person p) throws Exception {
+ return Json.createObjectBuilder()
+ .add("id", p.getId())
+ .add("name", p.getName())
+ .build();
+ }
+
+ @Override
+ public Person adaptFromJson(JsonObject adapted) throws Exception {
+ Person person = new Person();
+ person.setId(adapted.getInt("id"));
+ person.setName(adapted.getString("name"));
+ return person;
+ }
+}
\ No newline at end of file
diff --git a/jsonb/src/main/java/com/baeldung/jsonb/Person.java b/jsonb/src/main/java/com/baeldung/jsonb/Person.java
index 7a54b37574..a506c1b000 100644
--- a/jsonb/src/main/java/com/baeldung/jsonb/Person.java
+++ b/jsonb/src/main/java/com/baeldung/jsonb/Person.java
@@ -22,10 +22,10 @@ public class Person {
private BigDecimal salary;
public Person() {
+ this(0, "", "", 0, LocalDate.now(), new BigDecimal(0));
}
public Person(int id, String name, String email, int age, LocalDate registeredDate, BigDecimal salary) {
- super();
this.id = id;
this.name = name;
this.email = email;
diff --git a/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java b/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java
index 92ffe0aa6f..67beda77e1 100644
--- a/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java
+++ b/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java
@@ -17,6 +17,8 @@ import javax.json.bind.config.PropertyOrderStrategy;
import org.apache.commons.collections4.ListUtils;
import org.junit.Test;
+import com.baeldung.adapter.PersonAdapter;
+
public class JsonbTest {
@Test
@@ -155,4 +157,32 @@ public class JsonbTest {
.equals(person));
}
+ @Test
+ public void givenPersonObject_whenSerializeWithAdapter_thenGetPersonJson() {
+ JsonbConfig config = new JsonbConfig().withAdapters(new PersonAdapter());
+ Jsonb jsonb = JsonbBuilder.create(config);
+ Person person = new Person(1, "Jhon", "jhon@test.com", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0));// new Person(1, "Jhon");
+ String jsonPerson = jsonb.toJson(person);
+ // @formatter:off
+ String jsonExpected =
+ "{\"id\":1," +
+ "\"name\":\"Jhon\"}";
+ // @formatter:on
+ assertTrue(jsonExpected.equals(jsonPerson));
+ }
+
+ @Test
+ public void givenPersonJson_whenDeserializeWithAdapter_thenGetPersonObject() {
+ JsonbConfig config = new JsonbConfig().withAdapters(new PersonAdapter());
+ Jsonb jsonb = JsonbBuilder.create(config);
+ Person person = new Person(1, "Jhon", "jhon@test.com", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0));// new Person(1, "Jhon");
+ // @formatter:off
+ String jsonPerson =
+ "{\"id\":1," +
+ "\"name\":\"Jhon\"}";
+ // @formatter:on
+ assertTrue(jsonb.fromJson(jsonPerson, Person.class)
+ .equals(person));
+ }
+
}