У меня проблемы с инициализацией фрагмента структуры и добавлением к нему.
Я пытаюсь смоделировать приведенный ниже JSON, поэтому я создал структуру с именем Error для отдельных ошибок и часть ошибок для их хранения. Я знаю, что могу сделать errSlice := []Err{}
, но это не будет показывать тег JSON.
{
"errors": [
{
"status": "422",
"source": { "pointer": "/data/attributes/firstName" },
"title": "Invalid Attribute",
"detail": "First name must contain at least three characters."
}
]
}
Моя попытка:
package main
import (
"encoding/json"
"net/http"
)
// ErrSlice is a slice of type Err
type ErrSlice struct {
Errors []Err `json:"errors"`
}
// Err is an error
type Err struct {
Status string `json:"status"`
Source Source `json:"source"`
Title string `json:"title"`
Detail string `json:"detail"`
}
// Source is struct of error source
type Source struct {
Pointer string `json:"pointer"`
}
func main() {
http.HandleFunc("/", foo)
http.ListenAndServe(":9001", nil)
}
func foo(w http.ResponseWriter, r *http.Request) {
errSlice := ErrSlice{}
// New error
err1 := Err{
Status: "422",
Source: Source{
Pointer: "/data/attributes/firstName",
},
Title: "Invalid Attribute",
Detail: "First name must contain at least three characters.",
}
// Append err1 to errSlice
errSlice = append(errSlice, err1) // error: "first argument to append must be slice"
// Marshall errSlice
jsonErrSlice, _ := json.Marshal(errSlice)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusUnprocessableEntity)
w.Write(jsonErrSlice)
}
Спасибо за ваше время!