Unmarshalling Escaped JSON Strings dengan Go
Apabila menggunakan Sockjs dengan Go, anda mungkin menghadapi masalah menghurai rentetan JSON yang terlepas yang diterima daripada klien JavaScript sebagai [ ]bait. Ini boleh membawa kepada mesej ralat seperti "json: cannot unmarshal string into Go". Untuk menyelesaikan isu ini, anda boleh menggunakan kaedah mudah untuk melepaskan rentetan sebelum menyahmarshall.
Menggunakan strconv.Unquote
strconv.Unquote() ialah terbina dalam Fungsi Go yang mengalih keluar aksara yang terlepas daripada rentetan. Dengan menerapkannya pada rentetan JSON yang diterima, anda boleh melepaskannya dengan berkesan.
Begini cara anda boleh melakukannya:
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) }
Dalam contoh ini, rentetan JSON yang terlepas berjaya dilepaskan menggunakan strconv .Unquote(), dan data dihuraikan ke dalam struct Msg tanpa ralat.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshall Escaped JSON Strings dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!