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

see*_*ode 5 go

我正在尝试使用Go将一些JSON发布到服务器,其中特殊字符(如&andand)必须在我发送的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))
}
Run Code Online (Sandbox Code Playgroud)

Go的json.Marshal正在将某些字符(如'&')转换为unicode.哪个好:

字符串值编码为强制为有效UTF-8的JSON字符串,用Unicode替换符号替换无效字节.尖括号"<"和">"被转义为"\ u003c"和"\ u003e",以防止某些浏览器将JSON输出误解为HTML.出于同样的原因,Ampersand"&"也被转移到"\ u0026".大段引用

它可能听起来很荒谬,但我发送的JSON是使用RESTful端点进行数据库查询,其中这个文字字符串将用于执行自由文本数据库查询 - 所以我不能使用unicode,因为它按字面解释.

那么有什么方法可以防止这种转换为unicode?或者我只需要在编组完成撤消这些替换?

谢谢

see*_*ode 2

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