duan5731 2015-03-04 14:35
浏览 540
已采纳

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

I'm trying to POST some JSON to a server using Go where special characters like ampersand must exist intact in the JSON string I'm sending.

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's json.Marshal is converting certain characters like '&' to unicode. Which is great:

String values encode as JSON strings coerced to valid UTF-8, replacing invalid bytes with the Unicode replacement rune. The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e" to keep some browsers from misinterpreting JSON output as HTML. Ampersand "&" is also escaped to "\u0026" for the same reason. Blockquote

It may sound rediculous but the JSON I'm sending is for a database query using a RESTful endpoint, where this literal string will be used to perform a freetext database query - so I can't use unicode since it's interpreted literally.

So is there any way to prevent this conversion to unicode? Or will I just have to undo these replacements after the marshaling is done?

Thanks

  • 写回答

2条回答 默认 最新

  • duan032225 2015-03-04 16:09
    关注

    I just realized after posting other characters are getting encoded to unicode as well and those are indeed working.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛