一開始只想到用 struct 來定義格式並忽略欄位名稱,但這方式其實是錯的,還好後來有找回記憶,簡單記錄一下避免忘記。
簡單來說,Golang 的 struct 對應的是 JSON object,slice 對應的才是 JSON array,把握這個原則,JSON 應該就難不倒你了。
當然相比 Javascript 或是 Python,Go 內建的 encoding/json 模組確實沒那麼好用,網路上有很多人另外寫了 encoder/decoder 或是 parser,可以去 github 挑一個順眼的來用。
網路上也有神人寫好對應的 tool,可以來這裡測試。
另外,JSON 第一層一定要是 Object,不能是 Array。
想要的格式
{
"array1": [
[
1,
2,
3
],
[
4,
5,
6
]
],
"array2": [
[
1,
2,
3
],
[
4,
5,
6
]
]
}
程式碼
func main() {
array1 := [][]int{
{1, 2, 3},
{4, 5, 6},
}
array2 := [][]int{
{1, 2, 3},
{4, 5, 6},
}
arrays := make(map[string][][]int)
arrays["array1"] = array1
arrays["array2"] = array2
jsonStr, _ := json.MarshalIndent(arrays, "", " ")
fmt.Println(string(jsonStr))
}
沒有留言:
張貼留言