ホームページ >バックエンド開発 >Golang >SockJS を使用して Go でエスケープされた JSON 文字列をアンマーシャリングする方法

SockJS を使用して Go でエスケープされた JSON 文字列をアンマーシャリングする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-22 16:29:10679ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。