json.NewDecoder(r.Body).Decode(&admin) returns 空结构
json.NewDecoder(r.Body).Decode(&admin) returns empty struct
我知道有很多人 运行 遇到了同样的问题,但我仍然在这里。我很确定我的代码是正确的,但结果结构仍然是空的。
功能:
func PostAdminHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-type", "application/json")
var admin admin.Admin
json.NewDecoder(r.Body).Decode(&admin)
fmt.Println(admin)
_, err := PostAdmin(admin)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
控制台打印:
{ ObjectID("000000000000000000000000")}
结构:
package entity
import "go.mongodb.org/mongo-driver/bson/primitive"
type Admin struct {
FirstName string
LastName string
Email string
Password string
Role string
Campus primitive.ObjectID
}
路线:
adminRoute.HandleFunc("/admin", admin.PostAdminHandler).Methods("POST")
Json 我通过 Insomnia 发送的数据:
{
"FirstName": "Jeanne",
"LastName": "Darc",
"Email": "jeanne.darc@rouen.fr",
"Password": "JeanneDarc2022",
"Role": "admin",
"Campus": "60d5a25ff4d722d3b77d1929",
}
我从解码器得到的错误:
invalid character '}' looking for beginning of object key string
此 RFC:
https://datatracker.ietf.org/doc/html/rfc7159
指定JSON对象格式为:
An object structure is represented as a pair of curly brackets
surrounding zero or more name/value pairs (or members). A name is a
string. A single colon comes after each name, separating the name
from the value. A single comma separates a value from a following
name. The names within an object SHOULD be unique.
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
因此,没有尾随逗号。
删除输入中的最后一个逗号。
我知道有很多人 运行 遇到了同样的问题,但我仍然在这里。我很确定我的代码是正确的,但结果结构仍然是空的。 功能:
func PostAdminHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-type", "application/json")
var admin admin.Admin
json.NewDecoder(r.Body).Decode(&admin)
fmt.Println(admin)
_, err := PostAdmin(admin)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
控制台打印:
{ ObjectID("000000000000000000000000")}
结构:
package entity
import "go.mongodb.org/mongo-driver/bson/primitive"
type Admin struct {
FirstName string
LastName string
Email string
Password string
Role string
Campus primitive.ObjectID
}
路线:
adminRoute.HandleFunc("/admin", admin.PostAdminHandler).Methods("POST")
Json 我通过 Insomnia 发送的数据:
{
"FirstName": "Jeanne",
"LastName": "Darc",
"Email": "jeanne.darc@rouen.fr",
"Password": "JeanneDarc2022",
"Role": "admin",
"Campus": "60d5a25ff4d722d3b77d1929",
}
我从解码器得到的错误:
invalid character '}' looking for beginning of object key string
此 RFC:
https://datatracker.ietf.org/doc/html/rfc7159
指定JSON对象格式为:
An object structure is represented as a pair of curly brackets
surrounding zero or more name/value pairs (or members). A name is a
string. A single colon comes after each name, separating the name
from the value. A single comma separates a value from a following
name. The names within an object SHOULD be unique.
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
因此,没有尾随逗号。
删除输入中的最后一个逗号。