如何在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 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)

}

以上是 如何在Go中解组转义的JSON字符串? 的全部内容, 来源链接: utcz.com/qa/417473.html

回到顶部