Well, what you obtain when you .get("test") is a JsonNode and it happens to be a TextNode; when you .toString() it, it will return the string representation of that TextNode, which is why you obtain that result.
What you want is to:
.get("test").textValue();
which will return the actual content of the JSON String itself (with everything unescaped and so on).
Note that this will return null if the JsonNode is not a TextNode.