golang json基本操作


JSON解析內置反射方式

import (
	"encoding/json"
	"fmt"
)

type Users struct {
	ID   string `json:"id"`
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	//結構體解析成json
	user1 := Users{"1", "user1", 22}
	s, err := json.Marshal(user1)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println(string(s))
	}
	//json解析到結構體
	var user2 Users
	err = json.Unmarshal(s, &user2)
	if err == nil {
		fmt.Println(user2)
	}
	//map解析成json
	m := make(map[string]interface{}, 2)
	m["id"] = "a"
	m["name"] = "bb"
	var data []byte
	if data, err = json.Marshal(m); err == nil {
		fmt.Println(string(data))
	}
	//json解析成map
	if err = json.Unmarshal(data, &m); err == nil {
		fmt.Println(m)
	}

}
  

easyJSON高性能代碼生成解析JSON

安裝:
go get github.com/mailru/easyjson
如果失敗,可以將項目克隆到$GOPATH/src/mailru 目錄下 並將包名改為easyjson,然后進入easyjson包下的easyjson目錄,運行go build 命令,再將生成的二進制文件放到$GOPATH/bin目錄下並改名為easyjson

使用:輸入命令easyjson -all models.go生成文件

type BasicInfo struct {
	Name string 
	Age  int    
}
type JobInfo struct {
	Skills []string 
}
type Employee struct {
	BasicInfo BasicInfo 
	JobInfo   JobInfo   
}

var jsonStr = `{
	"basic_info":{
	  	"name":"Mike",
		"age":30
	},
	"job_info":{
		"skills":["Java","Go","C"]
	}
}	`

func TestEasyJSON(t *testing.T) {
	e := Employee{}
  //調用easyJSON生成函數解析json
	e.UnmarshalJSON([]byte(jsonStr))
	t.Log(e)
  //調用easyJSON生成函數解析json
	if v, err := e.MarshalJSON(); err != nil {
		t.Error(err)
	} else {
		t.Log(string(v))
	}
}

  


免責聲明!

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



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