关于json解析的问题,求教各位大神

sunsanw · · 3779 次点击
更多评论
zsounder
Explore, Solve problems
两种方式,一种按照你写的,按照map一层层解析,另一种是抽出数据格式,直接解析,下面代码中都有了。 ```golang package main import ( "fmt" "encoding/json" ) type s3_sub struct{ P1 string `json:"p1"` P2 string `json:"p2"` } type ss struct{ S1 string `json:"s1"` S2 string `json:"s2"` S3 []*s3_sub `json:"s3"` } func main() { var filterInfoList map[string]interface{} strFilter :=`{"s1":"ddd","s2":"ppp","s3":[{"p1":"ok1"},{"p2":"ok2"}]}` err := json.Unmarshal([]byte(strFilter), &filterInfoList) if err != nil { fmt.Println("error in translating,", err.Error()) return } fmt.Println(filterInfoList["s1"]) fmt.Println(filterInfoList["s2"]) fmt.Println(filterInfoList["s3"]) s3slice := filterInfoList["s3"].([]interface{}) s3slice_idx_0 := s3slice[0].(map[string] interface{}) fmt.Println(s3slice_idx_0["p1"]) s3slice_idx_1 := s3slice[1].(map[string] interface{}) fmt.Println(s3slice_idx_1["p2"]) var ssins ss err = json.Unmarshal([]byte(strFilter), &ssins) fmt.Println(ssins.S3[0].P1) fmt.Println(ssins.S3[1].P2) } ```
#1