У меня есть следующий код, где я хочу просто проверить, правильно ли я маршалирую свой JSON или нет:
package main
import (
"encoding/json"
"fmt"
)
type TestFile struct {
Download_Seconds int `json:"download_seconds"`
Name string `json:"name"`
}
type TestFileList struct {
File *TestFile `json:"file"`
}
type TestSpec struct {
Files []*TestFileList `json:"files"`
}
func main() {
r := new(TestSpec)
b, _ := json.Marshal(r)
fmt.Println(string(b))
MyJSON := &TestSpec{Files: []&TestFileList{File: &TestFile{Download_Seconds: 600, Name: "filename1"}, File: &TestFile{Download_Seconds: 1200, Name: "filename2"}}}
b1, _ := json.Marshal(MyJSON)
fmt.Println(string(b1))
}
Я получаю эту ошибку:
.\go_json_eg2.go:28:32: syntax error: unexpected &, expecting type.
Line no: 28 для моего кода MyJSON := &TestSpec{Files: []&TestFileList{File: &TestFile{Download_Seconds: 600, Name: "filename1"}, File: &TestFile{Download_Seconds: 1200, Name: "filename2"}}}
Довольно новичок в маршалинге Go. Я подумал, что делаю это неправильно []&TestFileList{File: &TestFile{Download_Seconds: 600, Name: "filename1"}, File: &TestFile{Download_Seconds: 1200, Name: "filename2"}}.
Как это исправить?

&TestSpec{
Files: []*TestFileList{
{File: &TestFile{Download_Seconds: 600, Name: "filename1"}},
{File: &TestFile{Download_Seconds: 1200, Name: "filename2"}},
},
}
https://go.dev/play/p/I30Mm0CxrUT
Обратите внимание, что кроме ошибки, указанной Зомбо в комментариях, вы еще не указали фигурные скобки, разграничивающие отдельные элементы в слайсе, т.е. у вас есть {File: ..., File: ...}, а должно быть {{File: ...}, {File: ...}}.
Вы можете прочитать больше о Составные литералыздесь.
Я хотел дать еще один голос +1 не только за ответ, но и за то, что поделился некоторыми соответствующими ресурсами для чтения. Это определенно поможет
@Zombo Нет, это не работает. вы его тестировали?