我尝试使用Go将一些JSON发布到服务器,其中特殊字符(如&ampandand)必须在我发送的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。 &符"&"也逃到了#34; \#34; \#34;出于同样的原因。 块引用
这可能听起来很荒谬,但我发送的JSON是使用RESTful端点进行数据库查询,其中此文字字符串将用于执行自由文本数据库查询 - 因此我无法使用unicode它按字面解释。
那么有什么方法可以阻止这种转换为unicode?或者我只需要在编组完成后撤消这些替换吗?
由于
答案 0 :(得分:2)
我刚刚意识到在发布其他角色之后也会被编码为unicode,而且这些角色确实在工作。
答案 1 :(得分:0)