gpt4 book ai didi

json - 如何解码转义的 JSON 字符串

转载 作者:IT老高 更新时间:2023-10-28 13:02:56 27 4
gpt4 key购买 nike

我在 Go 中使用 Sockjs,但是当 JavaScript 客户端将 json 发送到服务器时,它会对其进行转义,并将其作为 [] 字节发送。我试图弄清楚如何解析 json,以便我可以读取数据。但我得到了这个错误。

json: cannot unmarshal string into Go value of type main.Msg

我该如何解决这个问题? 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 字符串上 :)

Here's an example ,由@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)
}

关于json - 如何解码转义的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com