{"id":13676760,"url":"https://github.com/devfeel/mapper","last_synced_at":"2025-03-31T04:03:51.003Z","repository":{"id":37549787,"uuid":"110688759","full_name":"devfeel/mapper","owner":"devfeel","description":"A simple and easy go tools for auto mapper map to struct, struct to map, struct to struct, slice to slice, map to slice, map to json.","archived":false,"fork":false,"pushed_at":"2024-09-06T02:37:57.000Z","size":99,"stargazers_count":407,"open_issues_count":5,"forks_count":34,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-24T02:27:05.003Z","etag":null,"topics":["auto","go","golang","map","mapper","slice","struct","tool"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devfeel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-14T12:42:06.000Z","updated_at":"2025-03-11T10:07:53.000Z","dependencies_parsed_at":"2024-10-30T05:23:57.658Z","dependency_job_id":null,"html_url":"https://github.com/devfeel/mapper","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfeel%2Fmapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfeel%2Fmapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfeel%2Fmapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfeel%2Fmapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devfeel","download_url":"https://codeload.github.com/devfeel/mapper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246413232,"owners_count":20773053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto","go","golang","map","mapper","slice","struct","tool"],"created_at":"2024-08-02T13:00:32.521Z","updated_at":"2025-03-31T04:03:50.981Z","avatar_url":"https://github.com/devfeel.png","language":"Go","readme":"# devfeel/mapper\n\nA simple and easy go tools for auto mapper struct to map, struct to struct, slice to slice, map to slice, map to json.\n\n## 1. Install\n\n```\ngo get -u github.com/devfeel/mapper\n```\n\n## 2. Getting Started\n\nTraditional Usage\n``` go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/devfeel/mapper\"\n)\n\ntype (\n\tUser struct {\n\t\tName string\n\t\tAge  int\n\t\tId   string `mapper:\"_id\"`\n\t\tAA   string `json:\"Score\"`\n\t\tTime time.Time\n\t}\n\n\tStudent struct {\n\t\tName  string\n\t\tAge   int\n\t\tId    string `mapper:\"_id\"`\n\t\tScore string\n\t}\n\n\tTeacher struct {\n\t\tName  string\n\t\tAge   int\n\t\tId    string `mapper:\"_id\"`\n\t\tLevel string\n\t}\n)\n\nfunc init() {\n\tmapper.Register(\u0026User{})\n\tmapper.Register(\u0026Student{})\n}\n\nfunc main() {\n\tuser := \u0026User{}\n\tuserMap := \u0026User{}\n\tteacher := \u0026Teacher{}\n\tstudent := \u0026Student{Name: \"test\", Age: 10, Id: \"testId\", Score: \"100\"}\n\tvalMap := make(map[string]interface{})\n\tvalMap[\"Name\"] = \"map\"\n\tvalMap[\"Age\"] = 10\n\tvalMap[\"_id\"] = \"x1asd\"\n\tvalMap[\"Score\"] = 100\n\tvalMap[\"Time\"] = time.Now()\n\n\tmapper.Mapper(student, user)\n\tmapper.AutoMapper(student, teacher)\n\tmapper.MapperMap(valMap, userMap)\n\n\tfmt.Println(\"student:\", student)\n\tfmt.Println(\"user:\", user)\n\tfmt.Println(\"teacher\", teacher)\n\tfmt.Println(\"userMap:\", userMap)\n}\n```\n\n执行main，输出：\n```\nstudent: \u0026{test 10 testId 100}\nuser: \u0026{test 10 testId 100 0001-01-01 00:00:00 +0000 UTC}\nteacher \u0026{test 10 testId }\nuserMap: \u0026{map 10 x1asd 100 2017-11-20 13:45:56.3972504 +0800 CST m=+0.006004001}\n```\n\nObject Usage\n\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"github.com/devfeel/mapper\"\n)\n\ntype (\n  User struct {\n    Name  string `json:\"name\" mapper:\"name\"`\n    Class int    `mapper:\"class\"`\n    Age   int    `json:\"age\" mapper:\"-\"`\n  }\n\n  Student struct {\n    Name  string `json:\"name\" mapper:\"name\"`\n    Class int    `mapper:\"class\"`\n    Age   []int  `json:\"age\" mapper:\"-\"`\n  }\n)\n\nfunc main() {\n  user := \u0026User{Name: \"shyandsy\", Class: 1, Age: 10}\n  student := \u0026Student{}\n\n  // create mapper object\n  m := mapper.NewMapper()\n\n  // in the version \u003c v0.7.8, we will use field name as key when mapping structs\n  // we keep it as default behavior in this version\n  m.SetEnableIgnoreFieldTag(true)\n\n  student.Age = []int{1}\n\n  // disable the json tag\n  m.SetEnabledJsonTag(false)\n\n  // student::age should be 1\n  m.Mapper(user, student)\n\n  fmt.Println(\"user:\")\n  fmt.Println(user)\n  fmt.Println(\"student:\")\n  fmt.Println(student)\n}\n```\n\n执行main，输出：\n```\nuser:\n\u0026{shyandsy 1 10}\nstudent:\n\u0026{shyandsy 1 [1]}\n```\n\n\n\n## Features\n\n* 支持不同结构体相同名称相同类型字段自动赋值，使用Mapper\n* 支持不同结构体Slice的自动赋值，使用MapperSlice\n* 支持字段为结构体时的自动赋值\n* 支持struct到map的自动映射赋值，使用Mapper\n* 支持map到struct的自动映射赋值，使用MapperMap\n* 支持map到struct slice的自动赋值，使用MapToSlice\n* 支持map与json的互相转换\n* 支持Time与Unix自动转换\n* 支持tag标签，tag关键字为 mapper\n* 兼容json-tag标签\n* 当tag为\"-\"时，将忽略tag定义，使用struct field name\n* 无需手动Register struct，内部自动识别\n* 支持开启关闭\n  * SetEnabledTypeChecking(bool)   // 类型检查\n  * IsEnabledTypeChecking \n  * SetEnabledMapperTag            // mapper tag\n  * IsEnabledMapperTag\n  * SetEnabledJsonTag              // json tag\n  * IsEnabledJsonTag\n  * SetEnabledAutoTypeConvert      // auto type convert\n  * IsEnabledAutoTypeConvert\n  * SetEnabledMapperStructField    // mapper struct field\n  * IsEnabledMapperStructField","funding_links":[],"categories":["Tool-kits \u0026 helpers"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevfeel%2Fmapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevfeel%2Fmapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevfeel%2Fmapper/lists"}