更快 XML Jackson:删除双引号
Faster XML Jackson: Remove double quotes
我有以下 json:
{"test":"example"}
我使用 Faster XML Jackson 的以下代码。
JsonParser jp = factory.createParser("{\"test\":\"example\"}");
json = mapper.readTree(jp);
System.out.println(json.get("test").toString());
它输出:
"example"
Jackson 中是否有删除双引号的设置?
好吧,当你 .get("test")
时得到的是一个 JsonNode
而它恰好是一个 TextNode
;当你 .toString()
它时,它将 return 那个 TextNode
的字符串表示,这就是你获得那个结果的原因。
你想要的是:
.get("test").textValue();
这将 return JSON 字符串本身的实际内容(所有内容都未转义等等)。
请注意,如果 JsonNode
不是 一个 TextNode
。
,这将 return 为 null
使用非引号文本的简单泛型三元,否则保持节点不变。
node.isTextual() ? node.asText() : node
jsonValue.get("value").isString().stringValue()
在调用单行方法之前还要检查 null
我有以下 json:
{"test":"example"}
我使用 Faster XML Jackson 的以下代码。
JsonParser jp = factory.createParser("{\"test\":\"example\"}");
json = mapper.readTree(jp);
System.out.println(json.get("test").toString());
它输出:
"example"
Jackson 中是否有删除双引号的设置?
好吧,当你 .get("test")
时得到的是一个 JsonNode
而它恰好是一个 TextNode
;当你 .toString()
它时,它将 return 那个 TextNode
的字符串表示,这就是你获得那个结果的原因。
你想要的是:
.get("test").textValue();
这将 return JSON 字符串本身的实际内容(所有内容都未转义等等)。
请注意,如果 JsonNode
不是 一个 TextNode
。
使用非引号文本的简单泛型三元,否则保持节点不变。
node.isTextual() ? node.asText() : node
jsonValue.get("value").isString().stringValue()
在调用单行方法之前还要检查 null