更快的XML Jackson:删除双引号

Kar*_*son 33 java json jackson

我有以下json:

{"test":"example"}
Run Code Online (Sandbox Code Playgroud)

我使用Faster XML Jackson中的以下代码.

JsonParser jp = factory.createParser("{\"test\":\"example\"}");
json = mapper.readTree(jp);
System.out.println(json.get("test").toString());
Run Code Online (Sandbox Code Playgroud)

它输出:

"example"
Run Code Online (Sandbox Code Playgroud)

杰克逊是否有设置删除双引号?

fge*_*fge 64

那么,当你.get("test")是一个时,你获得的是JsonNode它恰好是一个TextNode; 当你.toString()它,它将返回该字符串表示TextNode,这就是你获得该结果的原因.

你想要的是:

.get("test").textValue();
Run Code Online (Sandbox Code Playgroud)

这将返回JSON字符串本身的实际内容(所有内容都未转义,等等).

请注意,如果JsonNode 不是 a ,则返回null TextNode.

  • 更一般地说,`JsonNode.toString()`不应该用于除调试或故障排除之外的任何事情:它不适合(例如)适合序列化.代替.objectMapper.writeValueAsString(node)是正确的方法,并使用mapper配置,可能的缩进处理所有转义/引用方面. (4认同)

小智 5

使用非引用文本的简单通用三元,否则保持节点完整。

node.isTextual() ? node.asText() : node
Run Code Online (Sandbox Code Playgroud)