go语言Json

Json序列化
package main
import(
    "fmt"
    "encoding/json"
)

// 定义一个结构体
type Monster struct{
    Name string  `json:"name"`  //指定反序列化后的名字
    Age int  `json:"age"`
    Birthday string
    Sal float64
    skill string
}
//结构体序列化
func testStruct() {
    monster := Monster{
        Name : "牛魔王",
        Age : 500,
        Birthday : "2020-2-29",
        Sal : 8000.0,
        skill : "牛魔拳",
    }

    //序列化
    data, err := json.Marshal(&monster)
    if err != nil {
        fmt.Printf("序列号错误 err=%v\n", err)
    }
    //输出序列化结果
    fmt.Printf("monster序列化后=%v\n", string(data))
}

//map序列化
func testMap() {
    //定义一个map
    var a map[string]interface{}
    //使用map前先make
    a = make(map[string]interface{})
    a["name"] = "红孩儿"
    a["age"] = 30
    a["adress"] = "火云洞"

    //将a序列化
    data, err := json.Marshal(&a)
    if err != nil {
        fmt.Printf("序列号错误 err=%v\n", err)
    }
    //输出序列化结果
    fmt.Printf("a序列化后=%v\n", string(data))
}

//切片序列化
func testSlice() {
    var slice []map[string]interface{}
    var m1 map[string]interface{}
    m1 = make (map[string]interface{})
    m1["name"] = "jack"
    m1["age"] = "7"
    m1["adress"] = "beijing"
    slice = append(slice, m1)

    var m2 map[string]interface{}
    m2 = make (map[string]interface{})
    m2["name"] = "tom"
    m2["age"] = "20"
    m2["adress"] = "nanjing"
    slice = append(slice, m2)

    //将a序列化
    data, err := json.Marshal(slice)
    if err != nil {
        fmt.Printf("序列号错误 err=%v\n", err)
    }
    //输出序列化结果
    fmt.Printf("slice列化后=%v\n", string(data))

}

//基本数据类型序列化
func testFloat64() {
    var num1 float64 = 23.45

    //将num1序列化
    data, err := json.Marshal(num1)
    if err != nil {
        fmt.Printf("序列号错误 err=%v\n", err)
    }
    //输出序列化结果
    fmt.Printf("num1列化后=%v\n", string(data))

}
func main() {
    testStruct()
    testMap()
    testSlice()
    testFloat64()
}
Json反序列化
package main
import(
	"fmt"
	"encoding/json"
)

// 定义一个结构体
type Monster struct{
    Name string  `json:"name"`  //指定反序列化后的名字
    Age int  `json:"age"`
    Birthday string
    Sal float64
    skill string
}

//反序列化为结构体
func unmarshalStruct() {
	str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2020-2-29\",\"Sal\":8000}"

	//定义一个Monstar实例
	var monster Monster

	err := json.Unmarshal([]byte(str), &monster)
	if err != nil {
		fmt.Printf("unmarshal err=%v\n", err)
	}
	fmt.Printf("反序列化后 monster=%v\n", monster)
}

//反序列化为map
func unmarshalMap() {
	str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2020-2-29\",\"Sal\":8000}"

	//定义一个map实例
	var a map[string]interface{}	//反序列化无需make,unmarshal底层会自动make

	//反序列化
	err := json.Unmarshal([]byte(str), &a)
	if err != nil {
		fmt.Printf("unmarshal err=%v\n", err)
	}
	fmt.Printf("反序列化后 monster=%v\n", a)
}

//反序列化为map
func unmarshalSlice() {
	str := "[{\"adress\":\"beijing\",\"age\":\"7\",\"name\":\"jack\"}," + 
	"{\"adress\":\"nanjing\",\"age\":\"20\",\"name\":\"tom\"}]"

	//定义一个slice实例
	var slice []map[string]interface{}	//反序列化无需make,unmarshal底层会自动make

	//反序列化
	err := json.Unmarshal([]byte(str), &slice)
	if err != nil {
		fmt.Printf("unmarshal err=%v\n", err)
	}
	fmt.Printf("反序列化后 monster=%v\n", slice)
}

func main() {
	unmarshalStruct()
	unmarshalMap()
	unmarshalSlice()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值