BAEL-2890 (#6905)
This commit is contained in:
committed by
Grzegorz Piwowarek
parent
0c0f148320
commit
d2102a76ff
@@ -0,0 +1,18 @@
|
||||
package com.baeldung.jackson.node;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class ExampleStructure {
|
||||
private static ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
static JsonNode getExampleRoot() throws IOException {
|
||||
InputStream exampleInput = ExampleStructure.class.getClassLoader()
|
||||
.getResourceAsStream("node_example.json");
|
||||
JsonNode rootNode = mapper.readTree(exampleInput);
|
||||
return rootNode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.baeldung.jackson.node;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
|
||||
public class JsonNodeIteratorUnitTest {
|
||||
|
||||
private JsonNodeIterator onTest = new JsonNodeIterator();
|
||||
private static String expectedYaml = "name: \n" +
|
||||
" first: Tatu\n" +
|
||||
" last: Saloranta\n" +
|
||||
"title: Jackson founder\n" +
|
||||
"company: FasterXML\n" +
|
||||
"pets: \n" +
|
||||
"- type: dog\n" +
|
||||
" number: 1\n" +
|
||||
"- type: fish\n" +
|
||||
" number: 50";
|
||||
|
||||
@Test
|
||||
public void givenANodeTree_whenIteratingSubNodes_thenWeFindExpected() throws IOException {
|
||||
final JsonNode rootNode = ExampleStructure.getExampleRoot();
|
||||
|
||||
String yaml = onTest.toYaml(rootNode);
|
||||
System.out.println(yaml.toString());
|
||||
|
||||
assertEquals(expectedYaml, yaml);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.baeldung.jackson.node;
|
||||
|
||||
public class NodeBean {
|
||||
private int id;
|
||||
private String name;
|
||||
|
||||
public NodeBean() {
|
||||
}
|
||||
|
||||
public NodeBean(int id, String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.baeldung.jackson.node;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.containsString;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
|
||||
public class NodeOperationUnitTest {
|
||||
private static ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
@Test
|
||||
public void givenAnObject_whenConvertingIntoNode_thenCorrect() {
|
||||
final NodeBean fromValue = new NodeBean(2016, "baeldung.com");
|
||||
|
||||
final JsonNode node = mapper.valueToTree(fromValue);
|
||||
|
||||
assertEquals(2016, node.get("id")
|
||||
.intValue());
|
||||
assertEquals("baeldung.com", node.get("name")
|
||||
.textValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenANode_whenWritingOutAsAJsonString_thenCorrect() throws IOException {
|
||||
final String pathToTestFile = "node_to_json_test.json";
|
||||
final char[] characterBuffer = new char[50];
|
||||
|
||||
final JsonNode node = mapper.createObjectNode();
|
||||
((ObjectNode) node).put("id", 2016);
|
||||
((ObjectNode) node).put("name", "baeldung.com");
|
||||
|
||||
try (FileWriter outputStream = new FileWriter(pathToTestFile)) {
|
||||
mapper.writeValue(outputStream, node);
|
||||
}
|
||||
|
||||
try (FileReader inputStreamForAssertion = new FileReader(pathToTestFile)) {
|
||||
inputStreamForAssertion.read(characterBuffer);
|
||||
}
|
||||
final String textContentOfTestFile = new String(characterBuffer);
|
||||
|
||||
assertThat(textContentOfTestFile, containsString("2016"));
|
||||
assertThat(textContentOfTestFile, containsString("baeldung.com"));
|
||||
|
||||
Files.delete(Paths.get(pathToTestFile));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenANode_whenConvertingIntoAnObject_thenCorrect() throws JsonProcessingException {
|
||||
final JsonNode node = mapper.createObjectNode();
|
||||
((ObjectNode) node).put("id", 2016);
|
||||
((ObjectNode) node).put("name", "baeldung.com");
|
||||
|
||||
final NodeBean toValue = mapper.treeToValue(node, NodeBean.class);
|
||||
|
||||
assertEquals(2016, toValue.getId());
|
||||
assertEquals("baeldung.com", toValue.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenANode_whenAddingIntoATree_thenCorrect() throws IOException {
|
||||
final JsonNode rootNode = ExampleStructure.getExampleRoot();
|
||||
final ObjectNode addedNode = ((ObjectNode) rootNode).putObject("address");
|
||||
addedNode.put("city", "Seattle")
|
||||
.put("state", "Washington")
|
||||
.put("country", "United States");
|
||||
|
||||
assertFalse(rootNode.path("address")
|
||||
.isMissingNode());
|
||||
assertEquals("Seattle", rootNode.path("address")
|
||||
.path("city")
|
||||
.textValue());
|
||||
assertEquals("Washington", rootNode.path("address")
|
||||
.path("state")
|
||||
.textValue());
|
||||
assertEquals("United States", rootNode.path("address")
|
||||
.path("country")
|
||||
.textValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenANode_whenModifyingIt_thenCorrect() throws IOException {
|
||||
final String newString = "{\"nick\": \"cowtowncoder\"}";
|
||||
final JsonNode newNode = mapper.readTree(newString);
|
||||
|
||||
final JsonNode rootNode = ExampleStructure.getExampleRoot();
|
||||
((ObjectNode) rootNode).set("name", newNode);
|
||||
|
||||
assertFalse(rootNode.path("name")
|
||||
.path("nick")
|
||||
.isMissingNode());
|
||||
assertEquals("cowtowncoder", rootNode.path("name")
|
||||
.path("nick")
|
||||
.textValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenANode_whenRemovingFromATree_thenCorrect() throws IOException {
|
||||
final JsonNode rootNode = ExampleStructure.getExampleRoot();
|
||||
((ObjectNode) rootNode).remove("company");
|
||||
|
||||
assertTrue(rootNode.path("company")
|
||||
.isMissingNode());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user