I have this function in some code , i dont understand what are the double curly brackets in struct that help do decide that its not 2 jsons ?
How does it work ?
func readJSON(w http.ResponseWriter,r *http.Request,data interface{}) error {
maxBytes := 1024 * 1024
r.Body = http.MaxBytesReader(w,r.Body,int64(maxBytes))
dec := json.NewDecoder(r.Body)
dec.DisallowUnknownFields()
err := dec.Decode(data)
if err != nil {
return err
}
err = dec.Decode(&struct{}{})
if err != io.EOF {
return errors.New("Body must Only contain 1 json ")
}
return nil
}
>Solution :
Let’s break it down:
struct{}is a type: a struct with no fields.struct{}{}is a literal value: a new instance of the above type.&struct{}{}is a pointer to the above literal value.
By attempting to decode JSON a second time, it confirms that the body does not have a second JSON document after the first, for example:
{
"foo": "bar"
}
{
"foo": "qux"
}