Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyahkod Tatasusunan JSON dengan Jenis Data Campuran dalam Go?

Bagaimana untuk Menyahkod Tatasusunan JSON dengan Jenis Data Campuran dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-23 04:33:16864semak imbas

How to Decode JSON Arrays with Mixed Data Types in Go?

Menyahkod Tatasusunan JSON dengan Jenis Nilai Campuran

Dalam sesetengah kes, anda mungkin menghadapi tatasusunan JSON yang mengandungi unsur jenis yang berbeza. Contohnya:

{["NewYork",123]}

Tatasusunan Go memerlukan anda untuk menyatakan jenisnya secara eksplisit, yang boleh menjadi mencabar apabila berurusan dengan tatasusunan jenis campuran.

Penyelesaian Menggunakan Antara Muka{}

Untuk mengendalikan tatasusunan jenis campuran, anda boleh memanfaatkan jenis antara muka{}, yang membenarkan nilai apa-apa jenis. Begini cara anda boleh mencapainya dalam Go:

package main

import (
    "encoding/json"
    "fmt"
)

type UntypedJson map[string][]interface{}

func main() {
    j := `{"NYC": ["NewYork",123]}`
    ut := UntypedJson{}
    err := json.Unmarshal([]byte(j), &ut)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%#v", ut)
}
  • Mula-mula, kami mentakrifkan jenis tersuai UntypedJson yang memetakan rentetan kepada tatasusunan antara muka{}. Ini membolehkan kami menyimpan nilai apa-apa jenis dalam tatasusunan.
  • Kami menggunakan json.Unmarshal untuk menyahkod rentetan JSON ke dalam jenis UtnyptedJson kami. Memandangkan antara muka{} boleh menyimpan apa-apa jenis, ia boleh mengendalikan kedua-dua rentetan dan elemen integer dalam tatasusunan.
  • Akhir sekali, kami menggunakan fmt.Printf untuk memaparkan data yang tidak dimarshaled.

Nota: Perlu diingat bahawa contoh JSON yang disediakan secara teknikalnya tidak sah, kerana objek JSON mesti mempunyai kunci. Contoh yang diperbetulkan ialah:

{"NYC": ["NewYork",123]}

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Tatasusunan JSON dengan Jenis Data Campuran dalam Go?. 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