golang中struct、json、map互相轉化
golang中struct、json、map互相轉化
2018年05月07日 23:14:14 小拳頭 閱讀數:2704更多
個人分類: go
版權宣告:本文為博主原創文章,轉載請標明原文地址,謝謝 ^_^ https://blog.csdn.net/xiaoquantouer/article/details/80233177
一、Json和struct互換
(1)Json轉struct例子:
package main
import (
"fmt"
"encoding/json"
)
type People struct {
Name string `json:"name_title"`
Age int `json:"age_size"`
}
func JsonToStructDemo(){
jsonStr := `
{
"name_title": "jqw"
"age_size":12
}
`
var people People
json.Unmarshal([]byte(jsonStr), &people)
fmt.Println(people)
}
func main(){
JsonToStructDemo()
}
輸出:
注意json裡面的key和struct裡面的key要一致,struct中的key的首字母必須大寫,而json中大小寫都可以。
(2)struct轉json
在結構體中引入tag標籤,這樣匹配的時候json串對應的欄位名需要與tag標籤中定義的欄位名匹配,當然tag中定義的名稱不需要首字母大寫,且對應的json串中欄位名仍然大小寫不敏感。此時,結構體中對應的欄位名可以不用和匹配的一致,但是首字母必須大寫,只有大寫才是可對外提供訪問的。
例子:
package main
import (
"fmt"
"encoding/json"
)
type People struct {
Name string `json:"name_title"`
Age int `json:"age_size"`
}
func StructToJsonDemo(){
p := People{
Name: "jqw",
Age: 18,
}
jsonBytes, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(jsonBytes))
}
func main(){
StructToJsonDemo()
}
輸出:
二、json和map互轉
(1)json轉map例子:
func JsonToMapDemo(){
jsonStr := `
{
"name": "jqw",
"age": 18
}
`
var mapResult map[string]interface{}
err := json.Unmarshal([]byte(jsonStr), &mapResult)
if err != nil {
fmt.Println("JsonToMapDemo err: ", err)
}
fmt.Println(mapResult)
}
輸出:
(2)map轉Json例子
func MapToJsonDemo1(){
mapInstances := []map[string]interface{}{}
instance_1 := map[string]interface{}{"name": "John", "age": 10}
instance_2 := map[string]interface{}{"name": "Alex", "age": 12}
mapInstances = append(mapInstances, instance_1, instance_2)
jsonStr, err := json.Marshal(mapInstances)
if err != nil {
fmt.Println("MapToJsonDemo err: ", err)
}
fmt.Println(string(jsonStr))
}
輸出:
例2:
func MapToJsonDemo2(){
b, _ := json.Marshal(map[string]int{"test":1, "try":2})
fmt.Println(string(b))
}
輸出:
三、map和struct互轉
(1)map轉struct
需要安裝一個第三方庫
在命令列中執行: go get github.com/goinggo/mapstructure
例子:
func MapToStructDemo(){
mapInstance := make(map[string]interface{})
mapInstance["Name"] = "jqw"
mapInstance["Age"] = 18
var people People
err := mapstructure.Decode(mapInstance, &people)
if err != nil {
fmt.Println(err)
}
fmt.Println(people)
}
輸出
(2)struct轉map例子
func StructToMapDemo(obj interface{}) map[string]interface{}{
obj1 := reflect.TypeOf(obj)
obj2 := reflect.ValueOf(obj)
var data = make(map[string]interface{})
for i := 0; i < obj1.NumField(); i++ {
data[obj1.Field(i).Name] = obj2.Field(i).Interface()
}
return data
}
func TestStructToMap(){
student := Student{10, "jqw", 18}
data := StructToMapDemo(student)
fmt.Println(data)
}
輸出:
相關文章
- Golang操作結構體、Map轉化為JSONGolang結構體JSON
- struct轉map (反射)Struct反射
- golang-json, 原始碼解釋struct轉json時,struct對屬性欄位需要大寫才能轉譯成功GolangJSON原始碼Struct
- Java map轉JSONJavaJSON
- json序列化與反序列化 (map,struct, slice, 基本資料型別)JSONStruct資料型別
- json字串與物件互相轉換JSON字串物件
- js 陣列,字串,json互相轉換陣列字串JSON
- JAVA 中 string 和 int 互相轉化Java
- array+map+struct.hqlStruct
- Json,String,Map之間的轉換JSON
- Json序列化在golang中的應用JSONGolang
- Java Stram實現Map和字串之間互相轉換| BaeldungJava字串
- golang json字串轉結構體GolangJSON字串結構體
- 整明白 Golang struct 例項化和賦值GolangStruct賦值
- json轉化JSON
- 利用Jquery的map函式將json資料行轉化為表格jQuery函式JSON
- Golang中struct結構標籤(Tag)的使用GolangStruct
- 用struct做unordered_map的keyStruct
- Json和Map互轉,三個包(org.json/net.sf.json/com.google.gson)JSONGo
- Go 之基礎速學 (七) golang 裡包的使用 JSON 化 struct 結構體以及 if else 的初次使用(二)GolangJSONStruct結構體
- golang 多維mapGolang
- golang讀取檔案的json資料流,並解析到struct,儲存到資料庫GolangJSONStruct資料庫
- FastJSON解析Json字串(反序列化為List、Map)ASTJSON字串
- golang JSON技巧GolangJSON
- Golang 學習——結構體 struct (一)Golang結構體Struct
- Golang 學習——結構體 struct (二)Golang結構體Struct
- python中列表、字典和字串的互相轉換Python字串
- Java中String和byte型別互相轉換Java型別
- Golang 引用型別-mapGolang型別
- 徹底理解Golang MapGolang
- Golang 的 JSON 包GolangJSON
- Golang 流式解析 JsonGolangJSON
- json與字典的相互轉化JSON
- json轉化保留null欄位JSONNull
- XML轉化為json工具類XMLJSON
- 關於Golang struct{}{}用法和注意事項GolangStruct
- mysql表結構自動生成golang structMySqlGolangStruct
- golang 學習之路之 struct 結構體GolangStruct結構體