为了账号安全,请及时绑定邮箱和手机立即绑定

防止 Go 的 json.Marshal 将字符串强制转换为有效的 UTF-8 unicode?

防止 Go 的 json.Marshal 将字符串强制转换为有效的 UTF-8 unicode?

Go
慕妹3146593 2021-09-20 09:13:59
我正在尝试使用 Go 将一些 JSON 发布到服务器,其中我发送的 JSON 字符串中必须完整地存在与符号等特殊字符。http://play.golang.org/p/bPt9kl88-ypackage mainimport (    "fmt"    "encoding/json")func main() {    type TransactionStatement struct {        Query      string                     }    statement := &TransactionStatement{        Query:       "my query with this & that",    }    data, _ := json.Marshal(statement)    fmt.Printf("> %v", string(data))}Go 的json.Marshal正在将某些字符(如“&”)转换为 unicode。哪个很棒:字符串值编码为强制为有效 UTF-8 的 JSON 字符串,用 Unicode 替换符文替换无效字节。尖括号“<”和“>”被转义为“\u003c”和“\u003e”,以防止某些浏览器将JSON输出误解为HTML。出于同样的原因,与号“&”也被转义为“\u0026”。块引用这听起来可能很荒谬,但我发送的 JSON 用于使用 RESTful 端点的数据库查询,其中此文字字符串将用于执行自由文本数据库查询 - 所以我不能使用 unicode,因为它是按字面解释的。那么有什么办法可以防止这种转换为 unicode 吗?或者我是否只需要在编组完成后撤消这些替换?
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

我刚刚在发布其他字符后才意识到也被编码为 unicode 并且这些确实有效。


查看完整回答
反对 回复 2021-09-20
  • 2 回答
  • 0 关注
  • 457 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信