Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk menyahsiri json dengan tatasusunan tanpa nama di Golang?

Bagaimana untuk menyahsiri json dengan tatasusunan tanpa nama di Golang?

WBOY
Lepaskan: 2024-02-14 11:24:21
ke hadapan
907 orang telah melayarinya

如何在 Golang 中用匿名数组反序列化 json?

Di Golang, bagaimana untuk menggunakan tatasusunan tanpa nama untuk menyahsiri data json? Ini adalah masalah yang sering dihadapi oleh banyak pembangun. Tatasusunan tanpa nama boleh mengendalikan beberapa struktur data ringkas dengan mudah tanpa menentukan struktur tertentu. Dengan menggunakan pakej json terbina dalam Golang, kami boleh melaksanakan fungsi ini dengan mudah. Di bawah, editor PHP Xinyi akan memperkenalkan anda secara terperinci cara menggunakan tatasusunan tanpa nama untuk menyahsiri data json di Golang. Mari lihat!

Kandungan soalan

Saya menerima json ini daripada pelayan luaran:

[["010117", "070117", "080117"], ["080117", "140117", "150117"], ["150117", "210117", "220117"]]

Saya perlu menghuraikannya

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "os"
    "runtime"
)

type Range struct {
    From string
    To   string
    Do   string
}

type AllRanges struct {
    Ranges []Range
}

func main() {
    var ranges AllRanges
    j, err := os.ReadFile(file)

    if err != nil {
        panic("Can't read json file")
    }

    if json.Unmarshal(j, &v) != nil {
        panic("Error reading the json")
    }
}
Salin selepas log masuk

Apabila saya melaksanakan, panik dilemparkan mengatakan ralat berlaku semasa membaca json

Terima kasih terlebih dahulu!

Penyelesaian

  1. Ini bukan kod yang gagal. Kod yang anda siarkan tidak akan dikompilkan kerana ia cuba menyahmarshal menjadi pembolehubah yang tidak diisytiharkan v.

  2. Andaikan v应该是ranges sepatutnya

    , masalahnya sangat mudah....

ranges 的类型为 allranges,它是一个具有命名成员的结构体,ranges

ialah susunan struktur yang turut menamakan ahli.

Jadi apabila cuba unmarshaler json ke dalam struktur ini, unmarshaler akan mengharapkan untuk mencari:

{
   "ranges": [
        { 
           "from": "..",
           "to": ..,
           "do": ".."
        },
        { etc }
   ]
}
Salin selepas log masuk
rangesUntuk menyahmarshal data daripada tatasusunan rentetan tanpa nama, anda perlu mengisytiharkan

sebagai tatasusunan rentetan:

    var ranges [][]string

    ...

    if json.Unmarshal(j, &ranges) != nil {
        panic("Error reading the json")
    }
Salin selepas log masuk
Setelah menyahmarshall ke dalam tatasusunan ini, anda perlu menulis kod untuk menukarnya kepada nilai berstruktur yang diingini.

taman permainan [][]string ini menunjukkan cara untuk berjaya mengeluarkan data sampel ke dalam

. Transformasi dibiarkan sebagai latihan. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menyahsiri json dengan tatasusunan tanpa nama di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan