golang 使用map处理多级json后输出map中的数组

mac2024-03-11  23

/* * @Descripttion: * @version: * @Author: 步荀仙 * @Date: 2019-10-30 15:41:34 * @LastEditors: 步荀仙 * @LastEditTime: 2019-10-31 09:15:59 */ package main import ( "encoding/json" "fmt" ) //定义一个接受json的结构退 type testjson struct { Test1 string `json:"test1"` Test2 int `json:"test2"` Test3 []test3 `json:"test3"` Test6 test6 `json:"test6"` } type test3 struct { Test4 string `json:"test4"` Test5 int `json:"test5"` } type test6 struct { Test7 string `json:"test7"` Test8 int `json:"test8"` } func main() { // 想结构体中添加数据 jsonData := testjson{ Test1: "步荀仙", Test2: 999, } jsonData2 := test3{ Test4: "南宫恨", Test5: 888, } jsonData3 := test3{ Test4: "俏如来", Test5: 777, } jsonData.Test6.Test7 = "锦烟霞" jsonData.Test6.Test8 = 123 jsonData.Test3 = append(jsonData.Test3, jsonData2) jsonData.Test3 = append(jsonData.Test3, jsonData3) // 格式化为json数据 mapTestData := make(map[string]interface{}) jsonInfo, _ := json.Marshal(jsonData) // 反格式化为map _ = json.Unmarshal(jsonInfo, &mapTestData) // 输出map中的数据 fmt.Println(mapTestData) // 输出map["test3"]中数组索引为0的map["test4"]中的value fmt.Println(mapTestData["test3"].([]interface{})[0].(map[string]interface{})["test4"]) // 输出map["test6中"]结构体map["test7"]中的数据 fmt.Println(mapTestData["test6"].(map[string]interface{})["test7"]) // 循环输出map["test3"]中数组的值 for _, j := range mapTestData["test3"].([]interface{}) { fmt.Println(j.(map[string]interface{})) } }

输出结果

root@ main [master] $ go run service.go map[test1:步荀仙 test2:999 test3:[map[test4:南宫恨 test5:888] map[test4:俏如来 test5:777]] test6:map[test7:锦烟霞 test8:123]] 南宫恨 锦烟霞 map[test4:南宫恨 test5:888] map[test4:俏如来 test5:777]
最新回复(0)