我是 Golang 的新手,这可能很基础。下面是一个展示我需要的例子。Junk 应该只接受 id 和 name。即使 unmarshal 消除了额外的东西,我也需要一种方法来硬停止执行,说明 json 包含无效的键值对。如果有的话请告诉我。package mainimport ( "fmt" "encoding/json")type Junk struct{ ID int `json:"id"` Name string `json:"name"` Area string `json:"area"`}func main() { a:=Junk{} data:= `{"id":1,"name":"gg","junk":"Junk value"}` err := json.Unmarshal([]byte(data),&a) if err!=nil{ fmt.Println(err) } fmt.Println(a)}
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
使用func (*Decoder) DisallowUnknownFields():
DisallowUnknownFields 导致解码器在目标是结构并且输入包含与目标中任何未忽略的导出字段不匹配的对象键时返回错误。
package main
import (
"encoding/json"
"fmt"
"strings"
)
type Junk struct {
ID int `json:"id"`
Name string `json:"name"`
Area string `json:"area"`
}
func main() {
a := Junk{}
data := `{"id":1,"name":"gg","junk":"Junk value"}`
d := json.NewDecoder(strings.NewReader(data))
d.DisallowUnknownFields()
if err := d.Decode(&a); err != nil {
fmt.Println(err)
}
fmt.Println(a)
}
试试看: https: //play.golang.org/p/aTj2C-AAuZ7
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消