我正在尝试使用 Go 将一些 JSON 发布到服务器,其中我发送的 JSON 字符串中必须完整地存在与符号等特殊字符。
http://play.golang.org/p/bPt9kl88-y
package main
import (
"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 吗?或者我是否只需要在编组完成后撤消这些替换?
梦里花落0921
相关分类