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

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

Barbara Streisand
リリース: 2024-12-27 16:35:09
オリジナル
878 人が閲覧しました

How to Unmarshal Escaped JSON Strings in Go?

Go でエスケープされた JSON 文字列をアンマーシャリングする

Go で SockJS を使用する場合、JavaScript クライアントからバイト スライスとして送信された JSON データを解析するのは面倒な場合があります。サーバーはエスケープされた JSON を受け取りますが、それを通常の文字列として解析しようとします。その結果、「json: 文字列を main.Msg 型の Go 値にアンマーシャルできません」というエラーが発生します。

解決策は、strconv を利用することです。 JSON をアンマーシャリングする前に、.Unquote 関数を使用してください。この関数はエスケープ文字を削除し、Go 値に解析できる文字列を残します。

変更された例は次のとおりです。

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)
}
ログイン後にコピー

出力:

{"channel":"buu","name":"john", "msg":"doe"}
<nil>
buu john doe
ログイン後にコピー

以上がGo でエスケープされた JSON 文字列をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート