package com.fasterxml.jackson.databind.node; import com.fasterxml.jackson.databind.BaseMapTest; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; /** * This unit test suite tries to verify that JsonNode-based trees * can be deserialized as expected. */ public class TestTreeDeserialization extends BaseMapTest { final static class Bean { int _x; JsonNode _node; public void setX(int x) { _x = x; } public void setNode(JsonNode n) { _node = n; } } /* /********************************************************** /* Unit tests /********************************************************** */ public void testObjectNodeEquality() { ObjectNode n1 = new ObjectNode(null); ObjectNode n2 = new ObjectNode(null); assertTrue(n1.equals(n2)); assertTrue(n2.equals(n1)); n1.set("x", TextNode.valueOf("Test")); assertFalse(n1.equals(n2)); assertFalse(n2.equals(n1)); n2.set("x", TextNode.valueOf("Test")); assertTrue(n1.equals(n2)); assertTrue(n2.equals(n1)); } public void testReadFromString() throws Exception { String json = "{\"field\":\"{\\\"name\\\":\\\"John Smith\\\"}\"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode jNode = mapper.readValue(json, JsonNode.class); String generated = mapper.writeValueAsString( jNode); //back slashes are gone JsonNode out = mapper.readValue( generated, JsonNode.class ); //crashes here assertTrue(out.isObject()); assertEquals(1, out.size()); String value = out.path("field").asText(); assertNotNull(value); } }