【GO】json轉map、切片、結構體

咔咔博客之json轉map、切片、結構體

結構體轉json
map轉json
切片轉json
在上面三個轉json使用的是json_Marshal.也就是序列化的過程,那麼反序列的函數json.Unmarshal()html

json轉map

在這裏插入圖片描述

/** json轉map */
func main3() { 
	jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}`
	mMap := make(map[string]interface{ })
	err := json.Unmarshal([]byte(jsonStr), &mMap)
	if err != nil { 
		fmt.Println("反序列化失敗")
	} else { 
		// map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔]
		fmt.Println(mMap)
	}
}

json轉切片

這裏有一個注意點那就是切片最後一個沒有「,」 這裏須要注意一點
在這裏插入圖片描述json

func main() { 
	jsonStr := `[ {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}, {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}, {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]} ]`
	mSlice := make([]map[string]interface{ }, 0)
	err := json.Unmarshal([]byte(jsonStr), &mSlice)
	fmt.Println(err)
	if err != nil { 
		fmt.Println("反序列化失敗")
	} else { 
		// [map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔]]
		fmt.Println(mSlice)
	}
}

json轉結構體

在這裏插入圖片描述

type Persons struct { 
	Name    string
	Age     int
	Address []string
}

/** json轉結構體 */
func main() { 
	jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}`
	k := Persons{ }
	err := json.Unmarshal([]byte(jsonStr), &k)
	if err != nil { 
		fmt.Println("反序列化失敗")
	} else { 
		fmt.Println(k)
	}
}

注意點

  • 在json轉任何類型時都是傳的指針
  • 使用json_Unmarshil來轉json
  • json轉切片注意每一個值後邊的逗號
  • json轉結構體時注意結構體的屬性必須是開放的,也就是首字符必須大寫

博主微信歡迎交流

在這裏插入圖片描述

相關文章
相關標籤/搜索