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