下面的代碼,但簡短的版本是我在結構中有一個多維數組(切片)。我試圖創建一個可以轉儲任何結構的方法,它會寫入文件,但內部數組是...好吧,我不確定說實話。以下是較大代碼庫的簡潔版本,但需要說明重點。我對Go比較陌生,所以也許它是關于類型轉換的東西,我只是不知道。uint8package mainimport ( "encoding/json" "fmt" "io/ioutil")type MyStruct struct { MyArray [][]uint8 `json:"arr"` Name string `json:"name"`}func CreateMyStruct(name string, size uint16, fill uint8) *MyStruct { var m [][]uint8 var i, j uint16 for i = 0; i < size; i++ { sl := []uint8{} for j = 0; j < size; j++ { sl = append(sl, fill) } m = append(m, sl) } return &MyStruct{ MyArray: m, Name: name, }}func main() { myStruct := CreateMyStruct("bobby", 4, 1) fmt.Printf("%+v\n", myStruct) str, _ := json.Marshal(myStruct) fmt.Printf("%+v\n", str) ioutil.WriteFile("my.json", str, 0644)}輸出為:$ go run test.go&{MyArray:[[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]] Name:bobby}[123 34 97 114 114 34 58 91 34 65 81 69 66 65 81 61 61 34 44 34 65 81 69 66 65 81 61 61 34 44 34 65 81 69 66 65 81 61 61 34 44 34 65 81 69 66 65 81 61 61 34 93 44 34 110 97 109 101 34 58 34 98 111 98 98 121 34 125]$ cat my.json{"arr":["AQEBAQ==","AQEBAQ==","AQEBAQ==","AQEBAQ=="],"name":"bobby"}顯然,我期待這樣的東西:[[1,1,1,1]] // etc
1 回答

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
在Golang中是一個別名,并編碼為base64編碼的字符串(如您所見):[]byte
[]uint8
json.Marshall
[]byte
https://pkg.go.dev/encoding/json#Marshal
我懷疑解決方案是編寫自己的 JSON 編組程序來根據需要生成 JSON。
自定義編組器的示例包含在包的文檔中:
https://pkg.go.dev/encoding/json#example-package-CustomMarshalJSON
這里: https://play.golang.org/p/N2K8QfmPNnc
在我的手機上繁瑣地打字,所以很抱歉,這是黑客
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消