我正在尝试了解一些遗留的生产代码。
这是一个模拟生产代码的测试:
Map json = new HashMap();
json.put("messageCategory", "Hello World");
ObjectMapper mapper = new ObjectMapper();
String out = mapper.writeValueAsString(json);
System.out.println(out);
final JsonNode node = mapper.valueToTree(out);
Assert.assertEquals("Hello World", node.findValue("messageCategory"));
输出是:
{"messageCategory":"Hello World"}
junit.framework.AssertionFailedError:
Expected :Hello World
Actual :null
valueToTree方法返回null,我不知道为什么。
答案 0 :(得分:0)
它是null,因为您在valueToTree()调用中序列化字符串。因此,在映射之后,您的节点包含此表单的单个字符串:
"{\"messageCategory\":\"Hello World\"}"
因此您的节点不包含名为“messageCategory”的属性。
更改
final JsonNode node = mapper.valueToTree(out);
到
final JsonNode node = mapper.valueToTree(json);