Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar YAML kepada JSON dengan Selamat dalam Go Tanpa Kehilangan Integriti Data?
Apabila bekerja dengan data dinamik dalam format YAML, selalunya perlu menukarnya kepada JSON untuk pemprosesan selanjutnya. Walau bagaimanapun, menyahmarshall YAML secara terus ke dalam antara muka kosong{} boleh mengakibatkan masalah apabila menemui jenis peta[antara muka{}]antara muka{}, seperti yang ditunjukkan dalam senario yang diberikan.
Untuk menangani isu ini, fungsi rekursif yang dipanggil convert() digunakan. Fungsi ini berulang melalui nilai antara muka{} dan melakukan penukaran berikut:
Dengan berbuat demikian, nilai yang dikeluarkan boleh selamat disusun menjadi rentetan JSON.
Berikut ialah contoh cara menggunakan fungsi convert():
import ( "fmt" "log" "github.com/go-yaml/yaml" "encoding/json" ) 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 } func main() { // Define the YAML string const s = `Services: - Orders: - ID: $save ID1 SupplierOrderCode: $SupplierOrderCode - ID: $save ID2 SupplierOrderCode: 111111 ` // Unmarshal the YAML string into an empty interface var body interface{} if err := yaml.Unmarshal([]byte(s), &body); err != nil { log.Fatal(err) } // Recursively convert the interface to a map[string]interface{} body = convert(body) // Marshal the converted interface into a JSON string if b, err := json.Marshal(body); err != nil { log.Fatal(err) } else { fmt.Println("Converted JSON:", string(b)) } }
The output program adalah yang ditukar JSON:
Converted JSON: {"Services":[{"Orders":[ {"ID":"$save ID1","SupplierOrderCode":"$SupplierOrderCode"}, {"ID":"$save ID2","SupplierOrderCode":111111}]}]}
Atas ialah kandungan terperinci Bagaimana untuk Menukar YAML kepada JSON dengan Selamat dalam Go Tanpa Kehilangan Integriti Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!