/*
* @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]
参与评论
手机查看
返回顶部