在 Go 中使用 SockJS 时,将从 JavaScript 客户端发送的 JSON 数据解析为字节切片可能会很麻烦。服务器收到转义的 JSON,但尝试将其解析为普通字符串,导致错误“json: Cannot unmarshal string into Go value of type main.Msg”。
解决方案在于利用 strconv .在尝试解组 JSON 之前取消引用函数。此函数删除转义字符,留下一个可以解析为 Go 值的字符串。
这是一个修改后的示例:
package main import ( "encoding/json" "fmt" "strconv" ) type Msg struct { Channel string Name string Msg string } func main() { var msg Msg var val []byte = []byte(`"{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}"`) s, _ := strconv.Unquote(string(val)) err := json.Unmarshal([]byte(s), &msg) fmt.Println(s) fmt.Println(err) fmt.Println(msg.Channel, msg.Name, msg.Msg) }
输出:
{"channel":"buu","name":"john", "msg":"doe"} <nil> buu john doe
以上是如何在 Go 中解组转义 JSON 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!