Menyahmarshall JSON dengan Tatasusunan Saiz Tidak Diketahui
Apabila mendapatkan semula data melalui JSON, selalunya JSON yang dikembalikan mungkin mempunyai atau tidak tatasusunan. Contohnya, apabila meminta senarai meter pintar, ia mungkin diterima sebagai satu elemen di bawah "gwrcmd." Walau bagaimanapun, apabila meminta penggunaan elektrik, ia mungkin dikembalikan sebagai tatasusunan "gwrcmds."
Kekaburan ini memberikan cabaran besar kerana struktur Go memerlukan takrifan yang jelas untuk tatasusunan dan elemen tunggal. Untuk menangani perkara ini, json.Unmarshal boleh digunakan untuk mengembalikan sama ada satu struct { } atau tatasusunan []struct { } berdasarkan struktur JSON.
Walau bagaimanapun, json.Unmarshal mungkin menghadapi ralat jika jangkaan jenis bercanggah dengan struktur JSON. Untuk menyelesaikan isu ini, struct kedua boleh dibuat yang menduplikasi yang pertama dengan pengecualian menggunakan kepingan untuk "Gwrcmd." Sebagai alternatif, pendekatan yang lebih teguh melibatkan penggunaan json.RawMessage untuk menangkap nilai JSON jenis yang tidak diketahui dan melakukan unmarshalling selanjutnya berdasarkan kandungannya. Ini mengelakkan tekaan untuk menentukan jenis tatasusunan berdasarkan bait pertama sahaja.
Contoh kedua-dua pendekatan ditunjukkan dalam coretan kod Go yang disediakan. Selain itu, sumber yang berkaitan disenaraikan untuk penerokaan lanjut.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Tatasusunan JSON Saiz Tidak Diketahui dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!