如何在Go中解组转义的JSON字符串?
我在Go中使用Sockjs,但是当javascript客户端将json发送到服务器时,它会对其进行转义,并将其作为[]字节发送。我试图弄清楚如何解析json,以便我可以读取数据。但是我得到这个错误。
json:无法将字符串解组为main.Msg类型的Go值
我怎样才能解决这个问题?html.UnescapeString()无效:/
val, err := session.ReadMessage()if err != nil {
break
}
var msg Msg
err = json.Unmarshal(val, &msg)
fmt.Printf("%v", val)
fmt.Printf("%v", err)
type Msg struct {
Channel string
Name string
Msg string
}
//Output
"{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}"
json: cannot unmarshal string into Go value of type main.Msg
回答:
您可能strconv.Unquote
要先在JSON字符串上使用:)
这是 @gregghz提供的示例:
package mainimport (
"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)
}
以上是 如何在Go中解组转义的JSON字符串? 的全部内容, 来源链接: utcz.com/qa/417473.html