使用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)")
		}
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM