下面的代码,但简短的版本是我在结构中有一个多维数组(切片)。我试图创建一个可以转储任何结构的方法,它会写入文件,但内部数组是...好吧,我不确定说实话。以下是较大代码库的简洁版本,但需要说明重点。我对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 关注
- 113 浏览
添加回答
举报
0/150
提交
取消