Bagaimana untuk Membongkar Rentetan JSON ke dalam Slice Menggunakan Pembatas di Golang?

Linda Hamilton
Lepaskan: 2024-10-26 21:52:02
asal
235 orang telah melayarinya

How to Unmarshal a JSON String into a Slice Using a Delimiter in Golang?

Custom Unmarshal dengan String Split di Golang

Masalah:

Unmarshalling JSON ke dalam struct dengan medan yang sepatutnya sekeping rentetan, manakala nilai JSON ialah rentetan tunggal yang perlu dipisahkan menggunakan pembatas.

<code class="json">{
  "student_number": 1234567,
  "name": "John Doe",
  "subjects": "Chemistry-Maths-History-Geography"
}</code>
Salin selepas log masuk
<code class="go">type Student struct {
  StudentNumber int
  Name          string
  Subjects      []string
}</code>
Salin selepas log masuk

Jawapan:

Tentukan a jenis kepingan rentetan tersuai dan laksanakan json.Unmarshaler untuk mengendalikan pemisahan:

<code class="go">type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
  var s string
  if err := json.Unmarshal(data, &s); err != nil {
    return err
  }
  *ss = strings.Split(s, "-")
  return nil
}</code>
Salin selepas log masuk

Gunakan jenis tersuai ini dalam struct:

<code class="go">type Student struct {
  StudentNumber int
  Name          string
  Subjects      strslice
}</code>
Salin selepas log masuk

Contoh Kod:

<code class="go">func main() {
  var s Student
  err := json.Unmarshal([]byte(src), &s)
  fmt.Println(s, err)
}

const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`</code>
Salin selepas log masuk

Output:

{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Membongkar Rentetan JSON ke dalam Slice Menggunakan Pembatas di Golang?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!