go语言处理数据、基本通信以及环境配置 -- json,protobuf,grpc

本文详细介绍了Go语言处理JSON数据,包括数据对象到JSON转换、JSON到数据对象解析、simplejson使用,以及如何处理protobuf和gRPC。在protobuf部分,讲解了安装环境和生成.pb.go文件。gRPC部分涵盖了环境配置、客户端和服务端的编写。文章还提及单元测试的基本操作。
摘要由CSDN通过智能技术生成

go语言处理数据

go语言处理json数据

go语言数据对象 -> json数据

  • 结构体 struct -- 将结构体转成 json ,结构体成员变量第一个字母必须大写,只有字段首字母大写的才会被转换
  • 数组 array 、切片 slice -- slice / array 转换成json 数据
  • 集合 map --集合map转换成 json 数据 , map 的 key 必须是string类型,这是json要求的
  • 上述数据结构组合在一起

使用struct tag的时候,几个注意点:

  • 1、tag中标识的名称将称为json数据中key的值
  • 2、tag可以设置为`json:"-"`来表示本字段不转换为json数据,即使这个字段名首字母大写
  • 如果想要json key的名称为字符"-",则可以特殊处理`json:"-,"`,也就是加上一个逗号
  • 3、如果tag中带有,omitempty选项,那么如果这个字段的值为0值,即false、0、""、nil等,这个字段将不会转换到json中
  • 4、如果字段的类型为bool、string、int类、float类,而tag中又带有,string选项,那么这个字段的值将转换成json字符串

goToJson.go

/*
    author:qb
    date: 2020年11月 8日 20:01:10
    what: go数据对象 -> json数据
*/
package main

import (
    "encoding/json" //json包
    "fmt"
)

//将结构体转成 json ,结构体成员变量第一个字母必须大写,只有字段首字母大写的才会被转换
type Post struct {
    Name     string
    ShowName string
    Des      string
}

type Stu struct {
    Info   map[string]string `json:"个人信息"`
    Hobby  []string          `json:"爱好"`
    Enable bool              `json:"是否启用"`
    test   []string          `json:"tttt"`
}

func main() {

    //将结构体转成 json
    post := &Post{"xiaozhu", "hello xiaozhu", "this is a name"}
    b, err := json.MarshalIndent(post, "", "\t") //一个字段占一行

    if err != nil {
        fmt.Println(nil)
    }
    fmt.Println(string(b))

    //slice / array 转换成json 数据
    post2 := []string{"apple", "pen", "penapple"}
    b2, err2 := json.Marshal(post2)
    if err2 != nil {
        fmt.Println(nil)
    }
    fmt.Println(string(b2))

    //集合map转换成 json 数据 , map 的 key 必须是string类型,这是json要求的
    post3 := map[string]string{"name": "xiaozhu", "age": "13", "height": "168"}
    b3, err3 := json.MarshalIndent(post3, "", "\t")
    if err3 != nil {
        fmt.Println(err)
    }
    fmt.Println(string(b3))

    //组合在一起使用
    var stu Stu
    stu.Enable = true
    stu.Hobby = []string{"running", "basketball", "football"}
    stu.Info = map[string]string{
        "name":   "xiaozhu",
        "age":    "24",
        "height": "178"}
    bs, errs := json.MarshalIndent(&stu, "", "\t")
    //bs, errs := json.Marshal(&stu)
    if errs != nil {
        fmt.Println(errs)
    }
    fmt.Println(string(bs))
}

json数据 -> go语言数据对象

解析json数据到struct(结构已知)

  • 根据已知json文件进行分析,定义struct
  • 使用os 打开json数据文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值