Java 更快的XML:删除双引号

Java 更快的XML:删除双引号,java,json,jackson,Java,Json,Jackson,我有以下json: {"test":"example"} 我使用了来自QuickerXMLJackson的以下代码 JsonParser jp = factory.createParser("{\"test\":\"example\"}"); json = mapper.readTree(jp); System.out.println(json.get("test").toString()); 它输出: "example" Jackson中有删除双引号的设置吗?好吧,当您.get(“tes

我有以下json:

{"test":"example"}
我使用了来自QuickerXMLJackson的以下代码

JsonParser jp = factory.createParser("{\"test\":\"example\"}");
json = mapper.readTree(jp);
System.out.println(json.get("test").toString());
它输出:

"example"

Jackson中有删除双引号的设置吗?

好吧,当您
.get(“test”)
时获得的是一个
JsonNode
,它恰好是一个
TextNode
;当您
.toString()
调用它时,它将返回该
文本节点的字符串表示形式,这就是您获得该结果的原因

您想要的是:

.get("test").textValue();
它将返回JSON字符串本身的实际内容(所有内容都未被转换,以此类推)


请注意,如果
JsonNode
不是使用非引号文本的
TextNode
简单通用三元组,则返回null,否则保持节点完整

node.isTextual() ? node.asText() : node

更一般地说,
JsonNode.toString()
不应用于调试或故障排除以外的任何用途:例如,它不适合序列化。相反writeValueAsString(节点)是正确的方法,使用映射器配置和可能的缩进处理所有转义/引用方面。这很有效。如果希望将节点打印为带有非引号文本的字符串,则可以使用
objectMapper.writeValueAsString(节点)