首页 >后端开发 >Golang >如何使用 SockJS 在 Go 中解组转义 JSON 字符串?

如何使用 SockJS 在 Go 中解组转义 JSON 字符串?

Patricia Arquette
Patricia Arquette原创
2024-12-22 16:29:10729浏览

How to Unmarshall Escaped JSON Strings in Go with SockJS?

解组转义 JSON 字符串

在 Go 中使用 Sockjs 时,当 JavaScript 客户端将 JSON 数据作为转义字符串传输时,可能会遇到挑战。这可能会导致解析错误,例如“json:无法将字符串解组为 main.Msg 类型的 Go 值。”

解决方案

要避免此问题,请使用 strconv 预处理 JSON 字符串。取消引用。它的工作原理如下:

package main

import (
    "encoding/json"
    "fmt"
    "strconv"
)

type Msg struct {
    Channel string
    Name   string
    Msg     string
}

func main() {
    var msg Msg
    val := []byte(`"{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}"`)

    s, _ := strconv.Unquote(string(val))

    // Unmarshal the unquoted JSON string
    err := json.Unmarshal([]byte(s), &msg)

    fmt.Println(s)
    fmt.Println(err)
    fmt.Println(msg.Channel, msg.Name, msg.Msg)
}

在此示例中,我们使用 strconv.Unquote 从 JSON 字符串中删除转义字符。一旦取消引用,我们就将其解组到 Msg 结构中。这种方法解决了解析错误并允许我们正确访问数据。

以上是如何使用 SockJS 在 Go 中解组转义 JSON 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn