使用 Go 解析 JSON 输入时找不到字段,可能会出错吗? : i* k$ V' c1 T$ X我在文档中找不到。 # h$ \/ n9 r# G X O9 A根据需要指定字段是否有标签? : g% L9 l: R) F' E% E 0 U+ V ^7 T/ T' G$ l J" ^ 解决方案: " ^$ C4 |" _4 K9 v4 H- K3 i/ f
encoding/json包里没有必要的标签。你要么必须写你自己的MarshalJSON()方法,或事后检查缺失的字段。3 x0 E% C& e2 [- n
要检查缺失的字段,您必须使用指针来区分缺失/空值和零值:$ W- X. Z* N: P' }6 t- G1 q
type JsonStruct struct String *string Number *float64}2 J$ m# r; W: D4 V0 e, k6 e
完整的工作示例: 8 z% Z3 k7 B+ e
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)}' d) j2 H* t+ h" J) k) m* |