• Go 中 JSON 的序列化和反序列化


    golang中对json的序列化/反序列化操作还是比较容易的,
    序列化操作主要是通过encoding/json包的Marshal()方法来实现,
    反序列化操作主要是通过encoding/json包的Unmarshal()方法来实现.

    //JSON序列化和反序列化
    
    //可用在api序列化输出
    //转成结构体,方便程序操作等
    
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type Response1 struct {
    	Page   int
    	Fruits []string
    }
    
    type Response2 struct {
    	Page   int      `json:"page"`
    	Fruits []string `json:"fruits"`
    }
    
    func main() {
    
    	//布尔型
    	boolByte, _ := json.Marshal(true)
    	fmt.Println(string(boolByte))
    
    	//整数型
    	intByte, _ := json.Marshal(100)
    	fmt.Println(string(intByte))
    
    	//浮点型
    	floatByte, _ := json.Marshal(1.23456)
    	fmt.Println(string(floatByte))
    
    	//字符串
    	stringByte, _ := json.Marshal("字符串啊啊啊")
    	fmt.Println(string(stringByte))
    
    	//切片
    	sliceByte, _ := json.Marshal([]string{"apple", "orange", "banana"})
    	fmt.Println(string(sliceByte))
    
    	//字典
    	mapByte, _ := json.Marshal(map[string]int{"apple": 5, "orange": 6, "banana": 7})
    	fmt.Println(string(mapByte))
    
    	//自定义类型1
    	customsByte1, _ := json.Marshal(&Response1{Page: 1, Fruits: []string{"apple", "orange", "banana"}})
    	fmt.Println(string(customsByte1))
    
    	//自定义类型2,tag语法
    	customsByte2, _ := json.Marshal(&Response2{Page: 2, Fruits: []string{"apple", "orange", "banana"}})
    	fmt.Println(string(customsByte2))
    
    	//反序列化到结构体
    	json1 := `{"Page":1,"Fruits":["apple","orange","banana"]}`
    	json2 := `{"page":2,"fruits":["apple","orange","banana"]}`
    	response1 := Response1{}
    	response2 := Response2{}
    	json.Unmarshal([]byte(json1), &response1)
    	fmt.Println(response1)
    	json.Unmarshal([]byte(json2), &response2)
    	fmt.Println(response2)
    }
    
  • 相关阅读:
    Redis学习-开始
    MongoDb学习1
    Git删除tag
    简单实现Windows服务 TopShelf
    autofac 注入普通服务和WCF服务
    MVC过滤器之 OnActionExcuted
    jquery的$.extend()、$.fn和$.fn.extend()
    quartz_jobs.xml标准配置
    常用工具类11-上传类
    常用工具类10-上传水印类
  • 原文地址:https://www.cnblogs.com/taadis/p/12125829.html
Copyright © 2020-2023  润新知