Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar YAML kepada JSON dengan Struktur Data Dinamik dalam Go?
Menukar YAML kepada JSON Tanpa Struktur Eksplisit
Satu cabaran dalam menukar YAML kepada JSON timbul apabila struktur data dinamik, menjadikannya tidak sesuai untuk pemetaan kepada struct yang telah ditetapkan. Ralat ini berlaku apabila cuba menyusun jenis antara muka{} yang mengandungi peta peta bentuk[muka{}]antara muka{}.
Untuk memintas isu ini, fungsi penukaran rekursif diperlukan untuk mengubah peta dinamik ini ke dalam rakan sejawat serasi JSON yang sepadan, peta[rentetan]antara muka{}. Selain itu, kepingan dalam struktur data juga harus dilalui dan ditukar.
Fungsi Penukaran Rekursif
Fungsi convert() berikut berfungsi untuk tujuan ini, menukarkan semua peta yang ditemui secara rekursif [antara muka{}]antara muka{} dan []antara muka{} values:
func convert(i interface{}) interface{} { switch x := i.(type) { case map[interface{}]interface{}: m2 := map[string]interface{}{} for k, v := range x { m2[k.(string)] = convert(v) } return m2 case []interface{}: for i, v := range x { x[i] = convert(v) } } return i }
Contoh Penggunaan
Dalam contoh yang disediakan, input data YAML mula-mula dinyahmasukkan ke dalam pembolehubah{} antara muka:
var body interface{} err := yaml.Unmarshal([]byte(s), &body)
Fungsi convert() kemudiannya digunakan pada pembolehubah badan, menukar semua peta dinamik kepada peta[rentetan]antara muka{}:
body = convert(body)
Akhir sekali, badan yang ditukarkan disusun menjadi rentetan JSON:
b, _ := json.Marshal(body)
Output
Rentetan JSON keluaran dengan tepat mewakili input data YAML, walaupun kekurangan pemetaan eksplisit ke structs:
{"Services":[{"Orders":[ {"ID":"$save ID1","SupplierOrderCode":"$SupplierOrderCode"}, {"ID":"$save ID2","SupplierOrderCode":111111}]}]}
Nota
Adalah penting untuk mengetahui bahawa susunan elemen dalam output JSON mungkin berbeza daripada yang dalam input YAML disebabkan oleh tidak tertib sifat peta Go. Dalam kes yang mengekalkan susunan elemen adalah penting, pertimbangkan untuk menggunakan struktur data tersusun seperti sekeping struct.
Atas ialah kandungan terperinci Bagaimana untuk Menukar YAML kepada JSON dengan Struktur Data Dinamik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!