У меня есть координаты, возвращающиеся в JSON
Хотя API всегда должен возвращать их корректно в виде массива размера 2, как мы можем обеспечить правильность структуры и выдавать ошибку при демаршалинге (не считая очень ручного процесса). Смотрите пример случая, если JSON является недействительным.
package main
import (
"fmt"
"encoding/json"
)
// ResultType
type Location struct {
Coordinates [2]int `json:"coords,array[20]"`
}
func main() {
fmt.Println("Hello, playground")
result := Location{}
jsonBodyTooManyCoords := `{"coords": [1, 2, 3]}`
json.Unmarshal([]byte(jsonBodyTooManyCoords), &result)
fmt.Println(result) // Prints {1, 2}
result = Location{}
jsonBodyTooManyCoords = `{"coords": [1]}`
json.Unmarshal([]byte(jsonBodyTooManyCoords), &result)
fmt.Println(result) // Prints {1, 0}
}