解組具有混合資料類型的JSON 陣列
解組包含不同資料型別值的JSON 陣列的任務通常會帶來挑戰。例如,考慮以下JSON 陣列:
{["NewYork",123]}
問題:
首先,需要注意的是提供的JSON 在語法上不正確。 JSON 物件需要每個值的鍵,因此正確的表示形式是{"key":["NewYork",123]} 或簡單地["NewYork",123].
此外,在處理JSON時由於Go 數組由多種資料類型組成,因此當Go 數組需要指定類型時就會出現問題。這可能會讓您想知道如何處理這種情況。
解決方案:
解決這個問題的關鍵是使用型別介面{}。它允許您處理各種類型的值,而無需明確類型轉換。以下是一個示範其工作原理的程式碼範例:
import ( "encoding/json" "fmt" ) const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }
在此範例中,我們使用 UntypedJson 作為將字串對應到 interface{} 切片的自訂類型。透過利用interface{}類型,我們可以毫不費力地處理JSON數組中的混合資料類型。
程式的輸出將是:
<nil> map[string][]interface{}{"NYC": \["NewYork" 123]}
結論:
透過利用interface{}型,這種方法使您能夠有效地解組具有各種資料類型的JSON 數組。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3