golang——json的html标签转义问题json的Marshal 用来对slice,map , struct等结构化类型数据转义成[]byte/string,UnMarshal方法是用来对[]byte/string转义成指定结构的interface 。但在处理html标签字符中,会存在转义问题 。Marshal方法默认把html标签中的'', '' , ''字符转义成unicode,为强制为有效UTF-8的JSON字符串,用Unicode替换符号替换无效字节 。
go doc原文
Marshal的源码
这一行encOpts{escapeHTML: true}),这里的true导致标签被转义 。
针对上述问题,有两种解决办法 , 第一种是替换上述三个tag,第二种是SetEscapeHtml(false);
输出:
go类型转换type_name(expression)
float跟int可以互转,但是会丢失所有精度 。
func AppendBool(dst []byte, b bool) []byte
AppendBool 根据 b 的值将“true”或“false”附加到 dst 并返回扩展缓冲区 。
func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte
AppendFloat 将由 FormatFloat 生成的浮点数 f 的字符串形式附加到 dst 并返回扩展缓冲区 。
func AppendInt(dst []byte, i int64, base int) []byte
AppendInt 将由 FormatInt 生成的整数i的字符串形式附加到 dst 并返回扩展缓冲区 。
func AppendQuote(dst []byte, s string) []byte
AppendQuote 将由 Quote 生成的代表 s 的双引号 Go 字符串文字附加到 dst 并返回扩展缓冲区 。
func AppendQuoteRune(dst []byte, r rune) []byte
AppendQuoteRune 将由 QuoteRune 生成的表示符文的单引号 Go 字符文字附加到 dst 并返回扩展缓冲区 。
func AppendQuoteRuneToASCII(dst []byte, r rune) []byte
AppendQuoteRuneToASCII 将由 QuoteRuneToASCII 生成的代表该符文的单引号 Go 字符文字附加到 dst 并返回扩展缓冲区 。
func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte
AppendQuoteRuneToGraphic 将由 QuoteRuneToGraphic 生成的表示符文的单引号 Go 字符文字附加到 dst 并返回扩展缓冲区 。
func AppendQuoteToASCII(dst []byte, s string) []byte
AppendQuoteToASCII 将由 QuoteToASCII 生成的代表 s 的双引号 Go 字符串文字附加到 dst 并返回扩展缓冲区 。
func AppendQuoteToGraphic(dst []byte, s string) []byte
AppendQuoteToGraphic 将由 QuoteToGraphic 生成的代表 s 的双引号 Go 字符串文字附加到 dst 并返回扩展缓冲区 。
func AppendUint(dst []byte, i uint64, base int) []byte
AppendUint 将由 FormatUint 生成的无符号整数 i 的字符串形式附加到 dst 并返回扩展缓冲区 。
func Atoi(s string) (int, error)
Atoi 返回 ParseInt(s, 10, 0)转换为 int 类型的结果 。
func CanBackquote(s string) bool
CanBackquote 报告字符串 s 是否可以不改变为单行反引号字符串,而不包含 tab 以外的控制字符 。
func FormatBool(b bool) string
FormatBool 根据 b 的值返回“true”或“false”
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
FormatFloat 根据格式 fmt 和 precision prec 将浮点数f转换为字符串 。它将结果进行四舍五入,假设原始数据是从 bitSize 位的浮点值获得的(float32为32,float64为64) 。
格式 fmt 是 'b'(-ddddp±ddd,二进制指数),'e'(-d.dddde±dd,十进制指数) , 'E'(-d.ddddE±dd,十进制指数),'f'(-ddd.dddd,无指数),'g'('e'表示大指数 , 'f'表示否则)或 'G'('E'表示大指数,否则'f') 。
precision prec 控制由 'e','E','f','g' 和 'G' 格式打印的位数(不包括指数) 。对于 'e' , 'E' 和 'f',它是小数点后的位数 。对于 'g' 和 'G' 这是总位数 。特殊精度-1使用必需的最小位数,以便 ParseFloat 完全返回 f。
func FormatInt(i int64, base int) string
FormatInt 返回给定基数中的i的字符串表示,对于2 = base = 36.结果对于数字值 = 10使用小写字母 'a' 到 'z'。
推荐阅读
- 为什么手机卡一直显示网络,为什么手机卡一直显示网络异常
- java弹窗带代码,java弹出窗口代码
- thinkphpobclear的简单介绍
- 卡牌动作即时游戏,卡牌动作即时游戏大全
- php数据库数据类型 php的数据类型主要有哪几种?
- 戴尔电脑硬盘怎么拆下来,戴尔品牌机硬盘怎么拆
- 飞行甲板3游戏下载,飞行甲板图片
- 烧麦馆如何营销,烧麦店宣传词语
- java代码拆箱和装箱 java中拆箱是指将引用数据类型的对象转为基本数据类型