1 回答
TA贡献1805条经验 获得超10个赞
我认为你发送的字符串key是func GetBytes(key interface{}) ([]byte, error). 这就是您看到转义字符的原因。
package main
import (
"encoding/json"
"fmt"
"log"
)
func f(key interface{}) {
json, err := json.Marshal(key)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(json))
}
func main() {
data := map[string]interface{}{
"A": 1,
"B": 2,
}
f(data)
json, err := json.Marshal(data)
if err != nil {
log.Fatal(err)
}
f(string(json))
}
输出:
{"A":1,"B":2}
"{\"A\":1,\"B\":2}"
去游乐场链接:https://play.golang.org/p/iF1ckvZ9cQC
在这种情况下,您可以使用Unquote删除引号和转义字符:
package main
import (
"encoding/json"
"fmt"
"log"
"strconv"
)
func f(key interface{}) {
json, err := json.Marshal(key)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(json))
st, err := strconv.Unquote(string(json))
fmt.Println(st)
}
func main() {
data := map[string]interface{}{
"A": 1,
"B": 2,
}
json, err := json.Marshal(data)
if err != nil {
log.Fatal(err)
}
f(string(json))
}
输出:
"{\"A\":1,\"B\":2}"
{"A":1,"B":2}
Go 游乐场链接:https://play.golang.org/p/aoTEQtJslTs
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报