如何在go中将unicode字节数组转换为普通字符串



我正在从unix套接字获取字节数组,并尝试打印为字符串。我只是string(bytes),然后得到下面的字符串。

{\"已创建":1410263175,\"Id":\"f4e361333537c3725e212f78d603742cf3da4b738272f7232338b0d61fa4fb",\"ParentId":"a8a806a76e3e620a6f2172e401847beb4535b072cf7e60d31e91becc3986827e",\ 3901}\n,

如何删除转义符并将unicode字符u003转换为普通字符串?

这看起来像是一个JSON字符串,根据JSON规范带有\u转义符。JSON解码器将负责取消对字符串的捕获。

代码:

s := "{"Created":1410263175,"Id":"f4e36130333537c3725e212f78d603742cf3da4b738272f7232338b0d61fa4fb","ParentId":"a8a806a76e3e620a6f2172e401847beb4535b072cf7e60d31e91becc3986827e","RepoTags":["\u003cnone\u003e:\u003cnone\u003e"],"Size":0,"VirtualSize":1260903901}n"
var m map[string]interface{}
if err := json.Unmarshal([]byte(s), &m); err != nil {
    log.Fatal(err)
}
fmt.Printf("%#v", m)

打印以下内容(减去我为可读性添加的空白):

map[string]interface {}{
     "Created":1.410263175e+09, 
     "Id":"f4e36130333537c3725e212f78d603742cf3da4b738272f7232338b0d61fa4fb",
     "ParentId":"a8a806a76e3e620a6f2172e401847beb4535b072cf7e60d31e91becc3986827e", 
     "RepoTags":[]interface {}{"<none>:<none>"}, 
     "Size":0, 
     "VirtualSize":1.260903901e+09}

游乐场

在Go中将字节转换为字符串时,不会创建\u转义符。它是JSON编码器生成的字节序列的一部分。字符串转换运算符字符串(byteSlice)将这些字节按原样转换为字符串。

最新更新