BAEL-3458 | Jsoniter parsing API examples (#8508)
This commit is contained in:
parent
0f20a7dd14
commit
f46ea65783
|
@ -0,0 +1,5 @@
|
|||
## JSON
|
||||
|
||||
This module contains articles about JSON.
|
||||
|
||||
### Relevant Articles:
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>json-2</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<parent>
|
||||
<artifactId>parent-modules</artifactId>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.jsoniter</groupId>
|
||||
<artifactId>jsoniter</artifactId>
|
||||
<version>${jsoniter.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
<version>${assertj-core.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<properties>
|
||||
<jsoniter.version>0.9.23</jsoniter.version>
|
||||
<assertj-core.version>3.11.1</assertj-core.version>
|
||||
</properties>
|
||||
</project>
|
|
@ -0,0 +1,22 @@
|
|||
package com.baeldung.jsoniter.model;
|
||||
|
||||
public class Name {
|
||||
private String firstName;
|
||||
private String surname;
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getSurname() {
|
||||
return surname;
|
||||
}
|
||||
|
||||
public void setSurname(String surname) {
|
||||
this.surname = surname;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.baeldung.jsoniter.model;
|
||||
|
||||
import com.jsoniter.annotation.JsonProperty;
|
||||
import com.jsoniter.fuzzy.MaybeStringIntDecoder;
|
||||
|
||||
public class Student {
|
||||
@JsonProperty(decoder = MaybeStringIntDecoder.class)
|
||||
private int id;
|
||||
private Name name;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Name getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(Name name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package com.baeldung.jsoniter;
|
||||
|
||||
import com.baeldung.jsoniter.model.Name;
|
||||
import com.baeldung.jsoniter.model.Student;
|
||||
import com.jsoniter.JsonIterator;
|
||||
import com.jsoniter.ValueType;
|
||||
import com.jsoniter.any.Any;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static com.jsoniter.ValueType.STRING;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class JsoniterIntroUnitTest {
|
||||
|
||||
@Test
|
||||
public void whenParsedUsingBindAPI_thenConvertedToJavaObjectCorrectly() {
|
||||
String input = "{\"id\":1,\"name\":{\"firstName\":\"Joe\",\"surname\":\"Blogg\"}}";
|
||||
|
||||
Student student = JsonIterator.deserialize(input, Student.class);
|
||||
|
||||
assertThat(student.getId()).isEqualTo(1);
|
||||
assertThat(student.getName().getFirstName()).isEqualTo("Joe");
|
||||
assertThat(student.getName().getSurname()).isEqualTo("Blogg");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTypeInJsonFuzzy_whenFieldIsMaybeDecoded_thenFieldParsedCorrectly() {
|
||||
String input = "{\"id\":\"1\",\"name\":{\"firstName\":\"Joe\",\"surname\":\"Blogg\"}}";
|
||||
|
||||
Student student = JsonIterator.deserialize(input, Student.class);
|
||||
|
||||
assertThat(student.getId()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenParsedUsingAnyAPI_thenFieldValueCanBeExtractedUsingTheFieldName() {
|
||||
String input = "{\"id\":1,\"name\":{\"firstName\":\"Joe\",\"surname\":\"Blogg\"}}";
|
||||
|
||||
Any any = JsonIterator.deserialize(input);
|
||||
|
||||
assertThat(any.toInt("id")).isEqualTo(1);
|
||||
assertThat(any.toString("name", "firstName")).isEqualTo("Joe");
|
||||
assertThat(any.toString("name", "surname")).isEqualTo("Blogg");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenParsedUsingAnyAPI_thenFieldValueTypeIsCorrect() {
|
||||
String input = "{\"id\":1,\"name\":{\"firstName\":\"Joe\",\"surname\":\"Blogg\"}}";
|
||||
|
||||
Any any = JsonIterator.deserialize(input);
|
||||
|
||||
assertThat(any.get("id").valueType()).isEqualTo(ValueType.NUMBER);
|
||||
assertThat(any.get("name").valueType()).isEqualTo(ValueType.OBJECT);
|
||||
assertThat(any.get("error").valueType()).isEqualTo(ValueType.INVALID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenParsedUsingIteratorAPI_thenFieldValuesExtractedCorrectly() throws Exception {
|
||||
Name name = new Name();
|
||||
String input = "{ \"firstName\" : \"Joe\", \"surname\" : \"Blogg\" }";
|
||||
JsonIterator iterator = JsonIterator.parse(input);
|
||||
|
||||
for (String field = iterator.readObject(); field != null; field = iterator.readObject()) {
|
||||
switch (field) {
|
||||
case "firstName":
|
||||
if (iterator.whatIsNext() == ValueType.STRING) {
|
||||
name.setFirstName(iterator.readString());
|
||||
}
|
||||
continue;
|
||||
case "surname":
|
||||
if (iterator.whatIsNext() == ValueType.STRING) {
|
||||
name.setSurname(iterator.readString());
|
||||
}
|
||||
continue;
|
||||
default:
|
||||
iterator.skip();
|
||||
}
|
||||
}
|
||||
|
||||
assertThat(name.getFirstName()).isEqualTo("Joe");
|
||||
assertThat(name.getSurname()).isEqualTo("Blogg");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"name":{"firstName": "Joe", "surname":"Blogg"}}
|
Loading…
Reference in New Issue