JsonNode中asText()和toString()有什么区别?

JAC*_*ANG 3 java string json

所以我试图在POST后验证一些有效载荷.

有效负载(JSON)如下所示:

{"value":"\"<html><body><a href='http://www.example.com'>Hi there!</a></body></html>\""}
Run Code Online (Sandbox Code Playgroud)

然后我尝试将上面的内容转换为JsonNode并提取" value "的值.但是,这两个方法asText()&toString(),返回不同的字符串值.

这两种方法的工作原理有何不同?

鉴于字符串 "\"<html><body><a href='http://www.example.com'>Hi there!</a></body></html>\""

toString返回"<html><body><a href='http://www.example.com'>Hi there!</a></body></html>"

asText()返回<html><body><a href='http://www.example.com'>Hi there!</a></body></html>

Rav*_*avi 6

asText ()

它是一个抽象的方法JsonNode,在其中被覆盖 TextNode.而且,根据它的实现,它应该返回值而不需要任何操作.

@Override
public String asText() {
    return _value;
}
Run Code Online (Sandbox Code Playgroud)

toString ()

它被覆盖了Object.因此,它是对象的文本表示.因此,toString实际上会返回给定对象上的完整文本形式.并且,根据它的实施TextNode.它会为您的值附加引用(在开头和结尾).

/**
 * Different from other values, Strings need quoting
 */
@Override
public String toString()
{
    int len = _value.length();
    len = len + 2 + (len >> 4);
    return new StringBuilder(len)
            // 09-Dec-2017, tatu: Use apostrophes on purpose to prevent use as JSON producer:
            .append('\'')
            .append(_value)
            .append('\'')
            .toString();
}
Run Code Online (Sandbox Code Playgroud)

而且,打印时也可以看到相同的区别.

  • @JackZhang 是的,这正是我所说的。 (2认同)