💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 内置JSON解析器 利用反射实现,通过fieldTag来标识对应的Json值 ~~~ type BasicInfo struct { Name string `json:"name"` Age int `json:"age"` } type JobInfo struct { Skills []string `json:"skills"` } type Employee struct { BasicInfo BasicInfo `json:"basic_info"` JobInfo JobInfo `json:"job_info"` } var jsonStr = `{ "basic_info":{ "name":"Mike", "age":30 }, "job_info":{ "skills":["Java","Go","C"] } }` func TestEmbeddedJsonParse(t *testing.T) { e := new(Employee) err := json.Unmarshal([]byte(jsonStr), e) if err != nil { t.Error(err) } fmt.Println(*e) if v, err := json.Marshal(e); err == nil { fmt.Println(string(v)) } else { t.Error(err) } } ~~~ ### 踩坑笔记 1. 当 struct 中的字段没有值时,使用 json.Marshal 方法并不会自动忽略这些字段,而是根据字段的类型输出了他们的默认空值; 2. json.Marshal在字段增加omitempty tag(字段值为零值)时,忽略该字段; 3. 字段在任何情况下都被 json 包忽略:`json:"-"`; 4. json.Marshal()在进行序列化时,只会序列化导出字段(开头字母大写的字段);