我从unix socket获取字节数组并尝试打印为字符串。我只是string(bytes)
并获得以下字符串。
{\"Created\":1410263175,\"Id\":\"f4e36130333537c3725e212f78d603742cf3da4b738272f7232338b0d61fa4fb\",\"ParentId\":\"a8a806a76e3e620a6f2172e401847beb4535b072cf7e60d31e91becc3986827e\",\"RepoTags\":[\"\\u003cnone\\u003e:\\u003cnone\\u003e\"],\"Size\":0,\"VirtualSize\":1260903901}\n,
如何删除转义字符\
并将unicode char \u003
转换为普通字符串?
答案 0 :(得分:2)
根据JSON规范,这看起来像一个带有\ u转义符的JSON字符串。 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)将这些字节按原样转换为字符串。