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

我正在尝试使用 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 吗?或者我是否只需要在编组完成后撤消这些替换?


慕妹3146593
浏览 458回答 2
2回答

梦里花落0921

我刚刚在发布其他字符后才意识到也被编码为 unicode 并且这些确实有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go