使用golang解析json

package main

import (
	"encoding/json"
	"fmt"
	"log"
)

var json_data = []byte(`
	{
		"name" : "Golang",
		"say" : ["Hello", "World!"]
	}
`)

type Data struct {
	Name string   `json:"name"`
	Say  []string `json:"say"`
}

func main() {
	// 方式 1, 使用结构体解析 json
	fmt.Println("> 1")
	data := Data{}
	if err := json.Unmarshal(json_data, &data); err != nil {
		log.Fatal(err)
	}
	fmt.Println(data.Name, data.Say)

	// 方式 2, 使用空接口解析 json
	fmt.Println("> 2")
	var i interface{}
	if err := json.Unmarshal(json_data, &i); err != nil {
		log.Fatal(err)
	}
	ndata := i.(map[string]interface{})
	for k, v := range ndata {
		switch v := v.(type) {
		case string:
			fmt.Println(k, v, "(string)")

		case []interface{}:
			for i, u := range v {
				fmt.Println(i, u, "  ")
			}
		default:
			fmt.Println(k, v, "(unkonw)")
		}
	}
}
posted @ 2021-04-13 22:46  搬砖__码农  阅读(3984)  评论(0)    收藏  举报