您可以添加一个切换用例,该用例要检查接口切片的接口类型,然后运行与递归相同的功能,直到解析整个json。
output := make(map[string]interface{})err = json.Unmarshal(body, &output)fmt.Println(err)identify(output)return err}func identify(output map[string]interface{}) { fmt.Printf("%T", output) for a, b := range output { switch bb := b.(type) { case string: fmt.Println("This is a string") case float64: fmt.Println("this is a float") case []interface{}: // Access the values in the JSON object and place them in an Item for _, itemValue := range jsonObj { fmt.Printf("%v is an interfacen", itemValue) identify(itemValue.(map[string]interface{})) } default: return } }}
可以有深度嵌套的json。我们只需要为每种情况创建选项,直到完全解析json。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)