+-
我使用的是 ObjectMapper
取值为 String
从 JsonNode
但看到这种奇怪的行为。我在这里错过了什么。谁能解释一下为什么实际结果有 double quotes
我希望这个测试能通过,但断言失败。
单元测试:
@Test
public void testGetValueAsString() throws JsonProcessingException {
ObjectMapper fasterXmlMapper = new com.fasterxml.jackson.databind.ObjectMapper();
JsonNode node = new TextNode("{}");
String valueAsString = fasterXmlMapper.writeValueAsString(node);
assertEquals("{}", valueAsString);
}
测试运行输出:
expected:<[{}]> but was:<["{}"]>
Expected :{}
Actual :"{}"
这里我指的是下面的库和类。
我使用的是 jackson-databind-2.9.9.jar
com.fasterxml.jackson.databind.JsonNode
和 com.fasterxml.jackson.databind.ObjectMapper
0
投票
投票
根据文档 TextNode
是
** * 包含文本值的值节点。 *
所以 TextNode
将其参数包装在 ""
. 为了使你的测试运行,你要么需要选择一个不同的子类的 Node
或将其调整为 assertEquals("\"{}\"", valueAsString);
.
0
投票
投票
你可以继续阅读 json.org 该 string
是。
字符串是由0个或多个Unicode字符组成的序列。裹挟 双引号使用反斜杠转义。一个字符被表示为一个单字符字符串。字符串很像一个C或Java字符串。
这就是 com.fasterxml.jackson.databind.node.TextNode
确实,包装 {}
双引号 "{}"
.
如果你想有一个空的 JSON Object
你可以创造 com.fasterxml.jackson.databind.node.ObjectNode
例如:
JsonNode node = mapper.getNodeFactory().objectNode();