From 7490c2c04cf96310fce541694099bcead5ec7ae9 Mon Sep 17 00:00:00 2001 From: "Juan M.vi" Date: Wed, 22 Nov 2017 01:22:35 -0300 Subject: [PATCH] Add Adapter sample & update Yasson version --- jsonb/pom.xml | 4 +-- .../com/baeldung/adapter/PersonAdapter.java | 26 ++++++++++++++++ .../main/java/com/baeldung/jsonb/Person.java | 2 +- .../java/com/baeldung/jsonb/JsonbTest.java | 30 +++++++++++++++++++ 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java 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)); + } + }