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

Linda Hamilton
Lepaskan: 2024-11-23 04:33:16
asal
860 orang telah melayarinya

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]}
Salin selepas log masuk

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)
}
Salin selepas log masuk
  • 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]}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan