GSON disableHtmlEscaping - 为什么GSON HTML首先默认转义?

时间:2014-04-29 11:48:47

标签: json gson

我注意到GSON HTML-escape <>个字符,可以使用disableHtmlEscaping()构建器配置方法禁用此字符。但我的问题是 - 为什么GSON默认会进行HTML转义?没有HTML转义的风险是什么?

感谢。

1 个答案:

答案 0 :(得分:7)

实际上,disableHtmlEscaping()方法告诉Gson不要转义HTML字符,例如<>&=和{{1} }。

导致问题的单引号的示例:在HTML页面的'标记中呈现未转义的JSON而不使用其他<script/>标记。

Joel Leitch写道a great response to a similar question。以下是重点:

  

诸如&lt;,&gt;,=等字符被转义,因为如果Gson评估的JSON字符串嵌入在XHTML页面中,那么我们不知道实际包装此JSON字符串的字符是什么。因此,如果有一个开放的报价,那么嵌入的JSON后跟一个收盘报价,那么我们不知道会发生什么。也许如果Gson字符串包含abc = 123并且恰好有一个“var abc”定义,则页面中嵌入的Gson输出可能会导致abc JavaScript变量被赋值123.同样的事情可能发生在&lt ;和&gt;甚至&amp;。

     

对于空格转义,\ t是标签的转义字符。同样,\ n和\ r是换行符和回车符的转义字符。像这样转义空格应确保任何编辑器都显示正确的空格(如果编辑器正确评估这些转义字符)。

EscaperJsonWriter类包含有关Gson转义的完整字符集的更多信息。