zoukankan      html  css  js  c++  java
  • Go语言JSON数据相互转换

    结构体转json

    结构体转json示例:

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //用户
    type User struct {
    	UserName string `json:"username"`
    	NickName string `json:"nickname"`
    	Age 	 int    `json:"age"`
    	Birthday string `json:"birthday"`
    	Sex      string `json:"sex"`
    	Email    string `json:"email"`
    	Phone    string `json:"phone"`
    }
    
    //结构体转JSON
    func structToJSON() {
    
    	user := User{
    		UserName: "itbsl",
    		NickName: "jack",
    		Age:   	  18,
    		Birthday: "2001-08-15",
    		Sex:      "itbsl@gmail.com",
    		Phone:    "176XXXX6688",
    	}
    
    	data, err := json.Marshal(user)
    
    	if err != nil {
    		fmt.Println("json.marshal failed, err:", err)
    		return
    	}
    
    	fmt.Printf("%s
    ", string(data))
    }
    
    func main() {
    
    	structToJSON()
    
    }
    

    输出结果:

    {"username":"itbsl","nickname":"jack","age":18,"birthday":"2001-08-15","sex":"itbsl@gmail.com","email":"","phone":"176XXXX6688"}
    

    map转json

    map转json示例:

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //map转json
    func mapToJSON(tempMap *map[string]interface{}) string {
    
    	data, err := json.Marshal(tempMap)
    
    	if err != nil {
    		panic(err)
    	}
    
    	return string(data)
    }
    
    func main() {
    
    	tempMap := make(map[string]interface{})
    
    	tempMap["username"] = "itbsl"
    	tempMap["age"] = 18
    	tempMap["sex"] = "male"
    
    	str := mapToJSON(&tempMap)
    
    	fmt.Println(str)
    
    }
    

    输出结果:

    {"age":18,"sex":"male","username":"itbsl"}
    

    int转json

    int转json

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    func testInt() {
    	var age = 100
    	data, err := json.Marshal(age)
    	if err != nil {
    		fmt.Printf("json.marshal failed, err:", err)
    		return
    	}
    
    	fmt.Printf("%s
    ", string(data))
    }
    
    func main() {
    	testInt()
    }
    

    输出结果:

    100
    

    slice转json

    slice转json

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //slice转json
    func sliceToJSON(s []map[string]interface{}) string {
    
    	data, err := json.Marshal(s)
    
    	if err != nil {
    		panic(err)
    	}
    
    	return string(data)
    
    }
    
    func main() {
    
    	var s []map[string]interface{}
    
    	tempMap := make(map[string]interface{})
    
    	tempMap["username"] = "itbsl"
    	tempMap["age"] = 18
    	tempMap["sex"] = "male"
    
    	s = append(s, tempMap)
    
    	tempMap = make(map[string]interface{})
    
    	tempMap["username"] = "jane"
    	tempMap["age"] = 23
    	tempMap["sex"] = "female"
    
    	s = append(s, tempMap)
    
    	str := sliceToJSON(s)
    
    	fmt.Println(str)
    }
    

    输出结果:

    [{"age":18,"sex":"male","username":"itbsl"},{"age":23,"sex":"female","username":"jane"}]
    

    json反序列化为结构体

    json转结构体:

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //用户
    type User struct {
    	UserName string `json:"username"`
    	NickName string `json:"nickname"`
    	Age 	 int    `json:"age"`
    	Birthday string `json:"birthday"`
    	Sex      string `json:"sex"`
    	Email    string `json:"email"`
    	Phone    string `json:"phone"`
    }
    
    //结构体转JSON
    func structToJSON() string {
    
    	user := User{
    		UserName: "itbsl",
    		NickName: "jack",
    		Age:   	  18,
    		Birthday: "2001-08-15",
    		Sex:      "itbsl@gmail.com",
    		Phone:    "176XXXX6688",
    	}
    
    	data, err := json.Marshal(user)
    
    	if err != nil {
    		fmt.Println("json.marshal failed, err:", err)
    		return ""
    	}
    
    	return string(data)
    }
    
    //json转结构体
    func JSONToStruct(str string) {
    
    	var user User
    
    	err := json.Unmarshal([]byte(str), &user)
    
    	if err != nil {
    
    		panic(err)
    	}
    
    	fmt.Println(user)
    
    }
    
    func main() {
    
    	JSONToStruct(structToJSON())
    }
    

    输出结果:

    {itbsl jack 18 2001-08-15 itbsl@gmail.com  176XXXX6688}
    

    json反序列化为map

    json转map

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //map转json
    func mapToJSON(tempMap *map[string]interface{}) string {
    
    	data, err := json.Marshal(tempMap)
    
    	if err != nil {
    		panic(err)
    	}
    
    	return string(data)
    }
    
    func JSONToMap(str string) {
    
    	var tempMap map[string]interface{}
    
    	err := json.Unmarshal([]byte(str), &tempMap)
    
    	if err != nil {
    		panic(err)
    	}
    
    	fmt.Println(tempMap)
    
    }
    
    func main() {
    
    	tempMap := make(map[string]interface{})
    
    	tempMap["username"] = "itbsl"
    	tempMap["age"] = 18
    	tempMap["sex"] = "male"
    
    	str := mapToJSON(&tempMap)
    
    	JSONToMap(str)
    }
    

    输出结果:

    map[age:18 sex:male username:itbsl]
    
  • 相关阅读:
    PYTHON lambda表达式
    PYTHON 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
    PYTHON 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者
    PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
    PYTHON 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
    PYTHON isinstance语法
    PYTHON 写函数,计算传入字符串中【数字、字母、空格、以及其他的个数】
    杂题之 一行式子求网页页数
    带头节点的单链表的插入操作优化
    找出唯一出现一次的数
  • 原文地址:https://www.cnblogs.com/itbsl/p/10638223.html
Copyright © 2011-2022 走看看