最近在用Golang下的json对含有html标签的Object序列化的时候,发现Golang会默认对html标签做转义处理。比如我的一段html代码:
1 | <div id="choose-results" class="li" style="display:none"><div class="dt">已选择</div><div class="dd"></div</div> |
在经过 json.Marshal()
处理之后就变成了:
1 | \u003cdiv id=\"choose-results\" class=\"li\" style=\"display:none\"\u003e\u003cdiv class=\"dt\"\u003e已选择\u003c/div\u003e\u003cdiv class=\"dd\"\u003e\u003c/div\u003e\u003c/div\u003e\n \u003c/div\u003e\n\n \n \u003cdiv id=\"choose-luodipei\" class=\"choose-luodipei li\" style=\"display:none\"\u003e\n \u003cdiv class=\"dt\"\u003e送装服务\u003c/div\u003e\n \u003cdiv class=\"dd\"\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv id=\"choose-suits\" class=\"li choose-suits\" style=\"display:none\"\u003e\n \u003cdiv class=\"dt\"\u003e套\u0026#x3000;\u0026#x3000;装\u003c/div\u003e\n \u003cdiv class=\"dd clearfix\"\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv id=\"choose-gift\" class=\"choose-gift li\" style=\"display: none;\"\u003e\n \u003cdiv class=\"dt\"\u003e搭配赠品\u003c/div\u003e\n \u003cdiv class=\"dd clearfix\"\u003e\n \u003cdiv class=\"gift J-gift\" clstag=\"shangpin|keycount|product|dapeizengpin\"\u003e\n \u003ci class=\"sprite-gift J-popup\"\u003e\u003c/i\u003e\u003cspan class=\"gift-tips\"\u003e选择搭配赠品(共\u003cem\u003e0\u003c/em\u003e个)\u003c/span\u003e\n \u003c/div\u003e\n \u003c!--choosed--\u003e\n \u003cdiv class=\"J-gift-selected hide\"\u003e\n \u003cdiv class=\"gift choosed J-gift-choosed\"\u003e\u003c/div\u003e\n \u003ca href=\"#none\" class=\"gift-modify J-popup\" clstag=\"shangpin|keycount|product|zengpin-genggai\"\u003e更改\u003c/a\u003e\n |
通过上网搜索,发现Golang为我们提供了一个 SetEscapeHTML()
方法,默认情况下该值为 true
,我们只要将其设置为 false
即可实现不对html标签转义。
我的封装方法如下:
1 | package utils |