【Golang 基础系列十八】Go语言JSON

在这里插入图片描述

概述

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的、键值对的数据交换格式。结构由大括号’{}’,中括号’[]’,逗号’,’,冒号’;’,双引号’""'组成,包含的数据类型有Object,Number,Boolean,String,Array, NULL等。

目录

  1. JSON序列化
  2. JSON反序列化
  3. 写JSON文件
  4. 读JSON文件
  5. 示例

JSON序列化

将Go语言原数据转换成JSON格式字符串

语法:

//传map,结构体,slice...,返回结果byte切片和error是否错误
func Marshal(v interface{
   }) ([]byte, error)
  1. 结构体转JSON

    type Person struct{
         
       Name string   //姓名
       Age int       //年龄
       Sex rune      //性别
       Hobby []string  //爱好
       Money float64   //钱
    }
      
    person:=Person{
         Name:"张三",Age:18,Sex:'男',Hobby:[]string{
         "听音乐","看书","打篮球"},Money:18.62}
    if bytes,err:=json.Marshal(person);err!=nil{
         
      fmt.Println("编码错误",err)
    }else{
         
    //{"Name":"张三","Age":18,"Sex":30007,"Hobby":["听音乐","看书","打篮球"],"Money":18.62}
      fmt.Println("编码成功:",string(bytes))
    }
    
  2. map转JSON

    p:=make(map[string]interface{
         },0)
    p["0"]=map[string]interface{
         }{
         "name":"张三","age":18,"sex":'男',"hobby":[]string{
         "听音乐","看书","打篮球"},"money":18.62}
    p["1"]=map[string]interface{
         }{
         "name":"李四","age":19,"sex":'女',"hobby":[]string{
         "听音乐","看电影","打足球"},"money":1.62}
    
    if bytes,err:=json.Marshal(p);err!=nil{
         
       fmt.Println("编码错误",err)
    }else{
         
       fmt.Println(string(bytes))
    }
    
  3. 切片转JSON

      p:=make([]map[string]interface{
         },0)
      p1:=map[string]interface{
         }{
         "name":"张三","age":18,"sex":'男',"hobby":[]string{
         "听音乐","看书","打篮球"},"money":18.62}
      p2:=map[string]interface{
         }{
         "name":"李四","age":19,"sex":'女',"hobby":[]string{
         "听音乐","看电影","打足球"},"money":1.62}
      p=append(p,p1,p2)
    
      if bytes,err:=json.Marshal(p);err!=nil{
         
        fmt.Println("编码错误",err)
      }else{
         
        fmt.Println(string(bytes))
      }
    

JSON反序列化

将JSON格式字符串转换成Go语言原数据

//传入JSON字符串的byte字节和Go接收数据的类型指针,返回err错误,是否返回成功
func Unmarshal(data []byte, v interface{
   }) error
  1. JSON转map

    str:=`{"Name":"张三","Age":18,"Sex":30007,"Hobby":["听音乐","看书","打篮球"],"Money":18.62}`
    
    p:=make(map[string]interface{
         }, 0)
    if err:=json.Unmarshal([]byte(str),&p);err!=nil{
         
      fmt.Println("解码失败",err)
    }else{
         
      fmt.Println("解析成功",p)
    }
    
  2. JSON转结构体

    str:=`{"Name":"张三","Age":18,"Sex":30007,"Hobby":["听音乐","看书","打篮球"],"Money":18.62}`
    var p Person
    
    if err:=json.Unmarshal([]byte(str),&p);err!=nil{
         
      fmt.Println("解码失败",err)
    }else{
         
      fmt.Println("解析成功"
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值