Apabila menggunakan Sockjs dengan Go, seseorang mungkin menghadapi cabaran apabila pelanggan JavaScript menghantar data JSON sebagai rentetan yang dilepaskan. Ini boleh membawa kepada ralat penghuraian seperti "json: cannot unmarshal string into Go of type main.Msg."
Untuk memintas isu ini, praproses rentetan JSON menggunakan strconv. Nyahpetik. Begini caranya:
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) }
Dalam contoh ini, kami menggunakan strconv.Unquote untuk mengalih keluar aksara melarikan diri daripada rentetan JSON. Setelah tidak disebut, kami meneruskan untuk menyahmarshalkannya ke dalam struct Msg. Pendekatan ini menyelesaikan ralat penghuraian dan membolehkan kami mengakses data dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshall Escaped JSON Strings dalam Go dengan SockJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!