下面的代碼,但簡(jiǎn)短的版本是我在結(jié)構(gòu)中有一個(gè)多維數(shù)組(切片)。我試圖創(chuàng)建一個(gè)可以轉(zhuǎn)儲(chǔ)任何結(jié)構(gòu)的方法,它會(huì)寫(xiě)入文件,但內(nèi)部數(shù)組是...好吧,我不確定說(shuō)實(shí)話(huà)。以下是較大代碼庫(kù)的簡(jiǎn)潔版本,但需要說(shuō)明重點(diǎn)。我對(duì)Go比較陌生,所以也許它是關(guān)于類(lèi)型轉(zhuǎn)換的東西,我只是不知道。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 回答

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