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