首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CustomTime 自定义时间类型
|
||||
type CustomTime time.Time
|
||||
|
||||
const timeLayout = "2006-01-02 15:04:05"
|
||||
|
||||
func (t CustomTime) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(time.Time(t).Format(timeLayout))
|
||||
}
|
||||
|
||||
func (t *CustomTime) UnmarshalJSON(data []byte) error {
|
||||
var timeStr string
|
||||
if err := json.Unmarshal(data, &timeStr); err != nil {
|
||||
return err
|
||||
}
|
||||
val, err := time.Parse(timeLayout, timeStr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*t = CustomTime(val)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Mobile 手机号脱敏
|
||||
type Mobile string
|
||||
|
||||
func (m Mobile) MarshalJSON() ([]byte, error) {
|
||||
num := string(m)
|
||||
if len(num) == 11 {
|
||||
return json.Marshal(num[:3] + "****" + num[7:])
|
||||
}
|
||||
return json.Marshal(num)
|
||||
}
|
||||
|
||||
// UserDTO 数据传输对象
|
||||
type UserDTO struct {
|
||||
Name string `json:"name"`
|
||||
Phone Mobile `json:"phone"`
|
||||
CreateAt CustomTime `json:"create_at"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
dto := UserDTO{
|
||||
Name: "bulma",
|
||||
Phone: Mobile("10012345678"),
|
||||
CreateAt: CustomTime(time.Now()),
|
||||
}
|
||||
data, _ := json.MarshalIndent(dto, "", " ")
|
||||
fmt.Println("\n=== 自定义序列化结果 ===")
|
||||
fmt.Println(string(data))
|
||||
}
|
||||
Reference in New Issue
Block a user