zoukankan      html  css  js  c++  java
  • 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)
    }
    
  • 相关阅读:
    hdu 4786 Fibonacci Tree
    Sae 上传文件到Storage
    Java通过代理server上网
    iOS 利用Socket UDP协议广播机制的实现
    android_handler(三)
    shell 脚本执行日志通用模块
    adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决
    【MongoDB】The Access control of mongodb
    Java——设计模式(装饰模式_IO)
    动态顺序表
  • 原文地址:https://www.cnblogs.com/taadis/p/12125829.html
Copyright © 2011-2022 走看看