• (三十九)golang--反序列化


    反序列化:是指将json字符串反序列化成原来的数据类型。

    import (
        "encoding/json"
        "fmt"
    )
    
    type monster struct {
        Name     string  `json:"name"`
        Age      int     `json:"age"`
        Birthday string  `json:"birthday"`
        Sal      float64 `json:"sal"`
        Skill    string  `json:"skill"`
    }
    
    func unmarshalStruct() {
        str := "{"name":"牛魔王","age":10,"birthday":"1994-09-18","sal":10000,"skill":"牛魔拳"}"
        var monster monster
        err := json.Unmarshal([]byte(str), &monster)
        if err != nil {
            fmt.Println("unmarshal error=", err)
        }
        fmt.Printf("反序列化后 monster=%v
    ", monster)
        fmt.Println(monster.Name)
    }
    
    func unmarshalMap() {
        str := "{"address":"水帘洞","age":20,"name":"孙悟空","skill":"七十二变"}"
        var a map[string]interface{}
        err := json.Unmarshal([]byte(str), &a)
        if err != nil {
            fmt.Println("unmarshal error=", err)
        }
        fmt.Printf("反序列化后 monster=%v
    ", a)
    }
    
    func unmarshalSlice() {
        str := "[{"address":"水帘洞","age":20,"name":"孙悟空","skill":["七十二变","如意金箍棒"]}," +
            "{"age":30,"name":"猪八戒"}]"
        var a []map[string]interface{}
        err := json.Unmarshal([]byte(str), &a)
        if err != nil {
            fmt.Println("unmarshal error=", err)
        }
        fmt.Printf("反序列化后 monster=%v
    ", a)
    }
    
    func main() {
        unmarshalStruct()
        unmarshalMap()
        unmarshalSlice()
    }

     需要注意的是:在反序列化之后的数据类型要与json字符串相对应。

  • 相关阅读:
    Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API
    Java 8 新特性-菜鸟教程 (7) -Java 8 Nashorn JavaScript
    Java 8 新特性-菜鸟教程 (6) -Java 8 Optional 类
    心理相关
    matlab和Visio安装
    论文资料搜集整理(研究现状)
    调式相关
    梅花落与折杨柳
    混合高斯模型——学习笔记
    NSCT,非下采样Contourlet变换——学习笔记
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11942172.html
Copyright © 2020-2023  润新知