使用 Go 解析 JSON 输入时找不到字段,可能会出错吗? 6 f6 [2 T( e3 `1 ^. r* D! r我在文档中找不到。( D/ y/ w, {+ t: ]% D: F5 A; t2 A
根据需要指定字段是否有标签? 7 a d$ s! h' k" N+ Q% M 7 h4 }; j* E. l/ Q, v解决方案: + p1 o1 C Q5 k2 a3 V% F" v encoding/json包里没有必要的标签。你要么必须写你自己的MarshalJSON()方法,或事后检查缺失的字段。3 G+ b' \: t& K" C: e; y$ F& k
要检查缺失的字段,您必须使用指针来区分缺失/空值和零值:, |) S; A% l+ W: p
type JsonStruct struct String *string Number *float64}; Q: T/ _% I% q
完整的工作示例: . e6 a. h- A% L% g6 U+ B4 [6 w& S) R
package mainimport "fmt" "encoding/json")type JsonStruct struct String *string Number *float64}var rawJson = []byte(`{ "string":"We do not provide a number"}`)func main() var s *JsonStruct err := json.Unmarshal(rawJson,&s) if err != nil panic(err) } if s.String == nil panic("String is missing or null!") } if s.Number == nil panic("Number is missing or null!") } fmt.Printf("String: %s Number: %f\n",*s.String,*s.Number)}4 E/ _' W$ u+ y* b' }