source code and tests for jackson node operations
This commit is contained in:
		
							parent
							
								
									2e5b1ac48d
								
							
						
					
					
						commit
						b7abc27a48
					
				
							
								
								
									
										10
									
								
								jackson/src/main/resources/node_example.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								jackson/src/main/resources/node_example.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| { | ||||
| 	"name":  | ||||
| 	{ | ||||
| 		"first": "Tatu", | ||||
| 		"last": "Saloranta" | ||||
| 	}, | ||||
| 
 | ||||
| 	"title": "Jackson founder", | ||||
| 	"company": "FasterXML" | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package org.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; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										30
									
								
								jackson/src/test/java/org/baeldung/jackson/node/MyBean.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								jackson/src/test/java/org/baeldung/jackson/node/MyBean.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| package org.baeldung.jackson.node; | ||||
| 
 | ||||
| public class MyBean { | ||||
|     private int id; | ||||
|     private String name; | ||||
| 
 | ||||
|     public MyBean() { | ||||
|     } | ||||
| 
 | ||||
|     public MyBean(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,103 @@ | ||||
| package org.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 JacksonNodeOperationTest { | ||||
|     private static ObjectMapper mapper = new ObjectMapper(); | ||||
| 
 | ||||
|     @Test | ||||
|     public void giveAnObject_whenConvertingIntoANode_thenCorrect() { | ||||
|         MyBean fromValue = new MyBean(2016, "baeldung.com"); | ||||
| 
 | ||||
|         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"; | ||||
|         char[] characterBuffer = new char[50]; | ||||
| 
 | ||||
|         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); | ||||
|         } | ||||
|         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 { | ||||
|         JsonNode node = mapper.createObjectNode(); | ||||
|         ((ObjectNode) node).put("id", 2016); | ||||
|         ((ObjectNode) node).put("name", "baeldung.com"); | ||||
| 
 | ||||
|         MyBean toValue = mapper.treeToValue(node, MyBean.class); | ||||
| 
 | ||||
|         assertEquals(2016, toValue.getId()); | ||||
|         assertEquals("baeldung.com", toValue.getName()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenANode_whenAddingIntoATree_thenCorrect() throws IOException { | ||||
|         JsonNode rootNode = ExampleStructure.getExampleRoot(); | ||||
|         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 { | ||||
|         String newString = "{\"nick\": \"cowtowncoder\"}"; | ||||
|         JsonNode newNode = mapper.readTree(newString); | ||||
| 
 | ||||
|         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 { | ||||
|         JsonNode rootNode = ExampleStructure.getExampleRoot(); | ||||
|         ((ObjectNode) rootNode).remove("company"); | ||||
| 
 | ||||
|         assertTrue(rootNode.path("company").isMissingNode()); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user