dot系列之我是mapper

dot系列之我是mapper

mapper - https://github.com/devfeel/mapper

什麼是mapper?

一個易於使用、靈活的實體轉換組件,極大簡化應用在處理數據協議的複雜度和工作量。

mapper實現了那些?

1. 支持不同結構體相同名稱相同類型字段自動賦值,使用Mapper
2. 支持不同結構體Slice的自動賦值,使用MapperSlice
3. 支持字段為結構體時的自動賦值
4. 支持map到struct的自動映射賦值,使用MapperMap
5. 支持map到struct slice的自動賦值,使用MapperMapSlice
6. 支持map與json的互相轉換
7. 支持Time與Unix自動轉換
8. 支持tag標籤,tag關鍵字為 mapper
9. 兼容json-tag標籤
10. 當tag為"-"時,將忽略tag定義,使用struct field name
11. 無需手動Register struct,內部自動識別

mapper怎樣使用?

1. Install

go get -u github.com/devfeel/mapper

2. Getting Started

package main

import (
\t"fmt"
\t"github.com/devfeel/mapper"
)

type (
\tUser struct {
\t\tName string
\t\tAge int
\t\tId string `mapper:"_id"`
\t\tAA string `json:"Score"`
\t\tTime time.Time
\t}

\tStudent struct {
\t\tName string
\t\tAge int
\t\tId string `mapper:"_id"`
\t\tScore string
\t}

\tTeacher struct {
\t\tName string
\t\tAge int
\t\tId string `mapper:"_id"`
\t\tLevel string
\t}
)

func init() {
\tmapper.Register(&User{})
\tmapper.Register(&Student{})
}

func main() {
\tuser := &User{}
\tuserMap := &User{}
\tteacher := &Teacher{}
\tstudent := &Student{Name: "test", Age: 10, Id: "testId", Score: "100"}
\tvalMap := make(map[string]interface{})
\tvalMap["Name"] = "map"
\tvalMap["Age"] = 10
\tvalMap["_id"] = "x1asd"
\tvalMap["Score"] = 100
\tvalMap["Time"] = time.Now()

\tmapper.Mapper(student, user)
\tmapper.AutoMapper(student, teacher)
\tmapper.MapperMap(valMap, userMap)

\tfmt.Println("student:", student)
\tfmt.Println("user:", user)
\tfmt.Println("teacher", teacher)
\tfmt.Println("userMap:", userMap)
}


分享到:


相關文章: