首頁  >  文章  >  後端開發  >  如何在 Golang 中用匿名數組反序列化 json?

如何在 Golang 中用匿名數組反序列化 json?

WBOY
WBOY轉載
2024-02-14 11:24:21887瀏覽

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

在Golang中,如何使用匿名陣列來反序列化json資料呢?這是許多開發者常常遇到的問題。匿名數組可以方便地處理一些簡單的資料結構,而無需定義特定的結構體。透過使用Golang的內建json包,我們可以輕鬆地實現這個功能。下面,php小編新一將為您詳細介紹如何在Golang中使用匿名數組來反序列化json資料的方法。讓我們一起來看看吧!

問題內容

我從外部伺服器接收此 json:

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

  1. ##我需要解析它 <pre class="brush:php;toolbar:false;">package main import ( &quot;encoding/json&quot; &quot;fmt&quot; &quot;io&quot; &quot;os&quot; &quot;runtime&quot; ) 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(&quot;Can't read json file&quot;) } if json.Unmarshal(j, &amp;v) != nil { panic(&quot;Error reading the json&quot;) } }</pre> 當我執行時,會拋出一個恐慌,表示讀取 json 時出錯 提前致謝!

  2. 解決方法

這不是失敗的程式碼。您發布的程式碼將無法編譯,因為它試圖解組為未宣告的變數 v

假設

v

應該是ranges,問題就很簡單了....

ranges 的類型是 allranges,它是一個具有命名成員的結構體,

ranges### 是一個結構體數組,也具有命名成員。 ### ###因此,當嘗試將 json 解組到此結構中時,解組器將期望找到:###
{
   "ranges": [
        { 
           "from": "..",
           "to": ..,
           "do": ".."
        },
        { etc }
   ]
}
###要解組由字串數組組成的匿名數組的數據,您需要將 ###ranges### 宣告為字串數組數組:###
    var ranges [][]string

    ...

    if json.Unmarshal(j, &ranges) != nil {
        panic("Error reading the json")
    }
###一旦解組到這個陣列陣列中,您就需要編寫程式碼將其轉換為所需的結構化值。 ### ###這個###playground###示範如何成功將範例資料解組到 ###[][]string### 中。轉型留作練習。 ###

以上是如何在 Golang 中用匿名數組反序列化 json?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除