Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Unmarshal Nested JSON dengan Struktur Tidak Diketahui?

Bagaimana untuk Unmarshal Nested JSON dengan Struktur Tidak Diketahui?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 22:48:02798semak imbas

How to Unmarshal Nested JSON with Unknown Structure?

Menyahmarshaling JSON Bersarang dengan Struktur Tidak Diketahui

Apabila bekerja dengan pangkalan data yang menyimpan dokumen JSON dengan struktur yang berbeza-beza, ia boleh mencabar untuk menyahmarshal data ke dalam struct tertentu tanpa mengetahui struktur yang tepat terlebih dahulu. Di sini kami meneroka dua pendekatan untuk menangani isu ini.

Menyemak Jenis

Sebelum menyahmarshall data JSON, kita perlu menentukan jenisnya. Ini boleh dicapai menggunakan salah satu kaedah berikut:

  • Nyahmarshal ke dalam peta[rentetan]antara muka{}: Dengan menyahmarshal json.RawMessage ke dalam peta, kami boleh mengakses medan "jenis" untuk mengenal pasti jenis data. Pendekatan ini membolehkan kita mengelakkan unmarshal berulang.
  • Gunakan ungkapan biasa untuk mengekstrak rentetan jenis: Kita boleh menggunakan ungkapan biasa untuk mencari medan "jenis" dan mengekstrak nilainya, yang kemudiannya boleh dibandingkan dengan jenis yang diketahui.

Menyahmarseling ke dalam Struktur Khusus

Setelah kami menentukan jenis data JSON, kami boleh menyahmarselingnya ke dalam struct yang sepadan. Dalam kes anda, jika anda mengetahui jenis yang mungkin terlebih dahulu, anda boleh mencipta satu siri pernyataan if-else atau pernyataan suis untuk menyahmarshal data ke dalam struct yang sesuai.

Mengelakkan Unmarshal Berulang

Untuk mengelakkan unmarshal berulang, anda boleh mencipta salinan json.RawMessage dan Unmarshal ke dalam antara muka terlebih dahulu. Sebaik sahaja anda mengetahui jenisnya, anda boleh Nyahmarshal json.RawMessage asal ke dalam struct jenis yang ditentukan.

Menggunakan Ungkapan Biasa untuk Menentukan Jenis

Jika anda lebih suka menggunakan ungkapan biasa, anda boleh mengikuti langkah di bawah:

  1. Gunakan fungsi regexp.MustCompile untuk mencipta ungkapan biasa yang sepadan dengan medan "jenis".
  2. Gunakan regexp. Fungsi FindStringSubmatch untuk mengekstrak rentetan jenis.
  3. Gunakan rentetan jenis yang diekstrak untuk menentukan struct yang sesuai untuk unmarshalling.

Kesimpulan

Oleh menggunakan pendekatan di atas, anda boleh membongkar data JSON bersarang dengan cekap tanpa mengetahui strukturnya yang tepat. Ini membolehkan lebih fleksibiliti dan kemudahan apabila bekerja dengan sumber data dinamik.

Atas ialah kandungan terperinci Bagaimana untuk Unmarshal Nested JSON dengan Struktur Tidak Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn