Skip to content

Commit 16814c1

Browse files
authored
Merge pull request eugenp#3102 from earth001/master
Add Adapter sample & update Yasson version - earth001_BAEL-1121
2 parents 69613f8 + 454674b commit 16814c1

4 files changed

Lines changed: 59 additions & 3 deletions

File tree

jsonb/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@
9898
<jsonb-api.version>1.0</jsonb-api.version>
9999
<johnzon.version>1.1.3</johnzon.version>
100100
<geronimo-json_1.1_spec.version>1.0</geronimo-json_1.1_spec.version>
101-
<yasson.version>1.0</yasson.version>
101+
<yasson.version>1.0.1</yasson.version>
102102
<javax.json.version>1.1.2</javax.json.version>
103103
<commons-collections4.version>4.1</commons-collections4.version>
104104
</properties>
105105

106-
</project>
106+
</project>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.adapter;
2+
3+
import javax.json.Json;
4+
import javax.json.JsonObject;
5+
import javax.json.bind.adapter.JsonbAdapter;
6+
7+
import com.baeldung.jsonb.Person;
8+
9+
public class PersonAdapter implements JsonbAdapter<Person, JsonObject> {
10+
11+
@Override
12+
public JsonObject adaptToJson(Person p) throws Exception {
13+
return Json.createObjectBuilder()
14+
.add("id", p.getId())
15+
.add("name", p.getName())
16+
.build();
17+
}
18+
19+
@Override
20+
public Person adaptFromJson(JsonObject adapted) throws Exception {
21+
Person person = new Person();
22+
person.setId(adapted.getInt("id"));
23+
person.setName(adapted.getString("name"));
24+
return person;
25+
}
26+
}

jsonb/src/main/java/com/baeldung/jsonb/Person.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ public class Person {
2222
private BigDecimal salary;
2323

2424
public Person() {
25+
this(0, "", "", 0, LocalDate.now(), new BigDecimal(0));
2526
}
2627

2728
public Person(int id, String name, String email, int age, LocalDate registeredDate, BigDecimal salary) {
28-
super();
2929
this.id = id;
3030
this.name = name;
3131
this.email = email;

jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import org.apache.commons.collections4.ListUtils;
1818
import org.junit.Test;
1919

20+
import com.baeldung.adapter.PersonAdapter;
21+
2022
public class JsonbTest {
2123

2224
@Test
@@ -155,4 +157,32 @@ public void givenPersonJson_whenDeserializeWithJsonb_thenGetPersonObject() {
155157
.equals(person));
156158
}
157159

160+
@Test
161+
public void givenPersonObject_whenSerializeWithAdapter_thenGetPersonJson() {
162+
JsonbConfig config = new JsonbConfig().withAdapters(new PersonAdapter());
163+
Jsonb jsonb = JsonbBuilder.create(config);
164+
Person person = new Person(1, "Jhon", "[email protected]", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0));// new Person(1, "Jhon");
165+
String jsonPerson = jsonb.toJson(person);
166+
// @formatter:off
167+
String jsonExpected =
168+
"{\"id\":1," +
169+
"\"name\":\"Jhon\"}";
170+
// @formatter:on
171+
assertTrue(jsonExpected.equals(jsonPerson));
172+
}
173+
174+
@Test
175+
public void givenPersonJson_whenDeserializeWithAdapter_thenGetPersonObject() {
176+
JsonbConfig config = new JsonbConfig().withAdapters(new PersonAdapter());
177+
Jsonb jsonb = JsonbBuilder.create(config);
178+
Person person = new Person(1, "Jhon", "[email protected]", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0));// new Person(1, "Jhon");
179+
// @formatter:off
180+
String jsonPerson =
181+
"{\"id\":1," +
182+
"\"name\":\"Jhon\"}";
183+
// @formatter:on
184+
assertTrue(jsonb.fromJson(jsonPerson, Person.class)
185+
.equals(person));
186+
}
187+
158188
}

0 commit comments

Comments
 (0)