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

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

Patricia Arquette
リリース: 2024-12-26 16:55:14
オリジナル
799 人が閲覧しました

How to Unmarshall Escaped JSON Strings in Go?

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

Go で Sockjs を使用する場合、JavaScript クライアントから受信したエスケープされた JSON 文字列を [ ]バイト。これにより、「json: 文字列を Go 値にアンマーシャリングできません」のようなエラー メッセージが表示される可能性があります。この問題を解決するには、簡単な方法を使用して、アンマーシャリングする前に文字列をエスケープ解除します。

strconv.Unquote の使用

strconv.Unquote() は組み込みです。文字列からエスケープ文字を削除する Go 関数。これを受信した JSON 文字列に適用することで、効果的にエスケープ解除できます。

その方法は次のとおりです:

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 文字列は strconv を使用して正常にエスケープ解除されています。 .Unquote() を実行すると、データはエラーなしで Msg 構造体に解析されます。

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

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