文章目录
1、json
1、Marshal:对象转换成json串
1、规则
- 在tag里面用
json:"name"
可以定义别名,这个正常是为了保证外部进来的小写,而对外声明的首字母大写(非私有) - tag中有
json:"-"
的数据不会被转出,如果带别名的-是会被正常转出的,比如说:json:"value,-"
- 结构体的私有属性不能被转换
- 时间转换之后会采用默认格式
- 通过自定义方法可以实现时间格式的自定义,下面详细讲
- 在字段tag中加上
,omitempty
,如果是空或者默认值不会被转换出去
转换的结果如下:
2、测试代码
看一下测试代码:
/*
* @Author : huangzj
* @Time : 2020/3/27 15:38
* @Description:
*/
package main
import (
"encoding/json"
"fmt"
"time"
)
type Time time.Time
const (
timeFormart = "2006-01-02 15:04:05"
)
type json1 struct {
Name string `json:"name"` //测试一下别名
Value string `json:"value,-"` //测试一下,有别名也有 - 能被转换
Value1 string `json:"-"` //测试一下,只有 - 能被转换
method1 string `json:"method1"` //测试一下私有属性不能被转换
Now time.Time `json:"now"` //测试一下时间字段可否被转换
Now1 Time `json:"now1"` //自定义时间转换的格式
Age int `json:",omitempty"` //测试一下 omitempty 值为空不能被转换
AgeString string `json:",omitempty"` //测试一下字符串 omitempty 值为空 不能被转换
Length int `json:",String"` //测试一下tag里面带有string的自动转换
}
func jsonTest() {
j := json1{
Name: "name",
Value: "value",
Value1: