{"id":22941257,"url":"https://github.com/ahnlabcloudmatelabs/gflatten","last_synced_at":"2025-12-15T05:48:27.620Z","repository":{"id":183653839,"uuid":"669990407","full_name":"ahnlabcloudmatelabs/gflatten","owner":"ahnlabcloudmatelabs","description":"Golang for map and struct  flatten library","archived":false,"fork":false,"pushed_at":"2023-07-25T08:58:57.000Z","size":5,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-01T11:11:18.675Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/ahnlabcloudmatelabs.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}},"created_at":"2023-07-24T03:50:04.000Z","updated_at":"2023-07-26T04:05:56.000Z","dependencies_parsed_at":"2023-07-25T09:51:55.813Z","dependency_job_id":null,"html_url":"https://github.com/ahnlabcloudmatelabs/gflatten","commit_stats":null,"previous_names":["cloudmatelabs/gflatten","ahnlabcloudmatelabs/gflatten"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ahnlabcloudmatelabs/gflatten","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahnlabcloudmatelabs%2Fgflatten","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahnlabcloudmatelabs%2Fgflatten/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahnlabcloudmatelabs%2Fgflatten/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahnlabcloudmatelabs%2Fgflatten/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahnlabcloudmatelabs","download_url":"https://codeload.github.com/ahnlabcloudmatelabs/gflatten/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahnlabcloudmatelabs%2Fgflatten/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27744826,"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","status":"online","status_checked_at":"2025-12-15T02:00:09.782Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-12-14T13:38:21.815Z","updated_at":"2025-12-15T05:48:27.604Z","avatar_url":"https://github.com/ahnlabcloudmatelabs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![cloudmate logo](https://avatars.githubusercontent.com/u/69299682?s=200\u0026v=4)\n\n# gflatten\n\n\u003csmall style=\"opacity: 0.7;\"\u003eby Cloudmate\u003c/small\u003e\n\n---\n\n![Cloudmate](https://img.shields.io/badge/Cloudmate-FFFFFF?style=for-the-badge\u0026logoColor=black\u0026logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMjAwLjAwMDAwMHB0IiBoZWlnaHQ9IjIwMC4wMDAwMDBwdCIgdmlld0JveD0iMCAwIDIwMC4wMDAwMDAgMjAwLjAwMDAwMCIKIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMjAwLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIKZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTg3NyAxODkwIGMtMTU0IC0yOCAtMzE5IC0xMDQgLTQzNCAtMjAwIC0xNDMgLTEyMCAtMjY4IC0zMzAgLTI5MAotNDg2IC03IC01MSAtMjEgLTM3IDE5NyAtMTg4IDkxIC02MyAyMDUgLTE0MyAyNTUgLTE3OCAyMTIgLTE0OSAyODcgLTE5OCAzMDgKLTE5OCAxNCAwIDcwIDQ4IDE2NiAxNDIgMTgwIDE3OCAyMDMgMjA1IDE5NSAyMzIgLTMgMTIgLTEzIDI3IC0yMiAzNCAtMzggMjkKLTYyIDE1IC0xOTcgLTExOCAtOTYgLTk1IC0xMzkgLTEzMCAtMTU3IC0xMzAgLTI1IDAgLTU4MiAzODEgLTYwMiA0MTIgLTcgMTIKLTUgMzEgNyA3MCAyOCA5MCA4NyAxNzggMTgyIDI3MyA3MyA3NCAxMDYgOTkgMTc3IDEzNCAxNzAgODQgMzM0IDEwNyA1MDIgNzIKMjAzIC00MiAzNzMgLTE1NCA0ODYgLTMyMSA0MCAtNjAgOTQgLTE3NiAxMDUgLTIyNyA3IC0zNCAzNyAtNjMgNjUgLTYzIDkgMAoyNyAxMSAzOSAyNCAyOCAzMCAyNSA2MCAtMTkgMTY2IC04NSAyMTEgLTI1NSAzOTAgLTQ1NSA0ODEgLTExMyA1MSAtMTk5IDcwCi0zMzUgNzQgLTY5IDIgLTE0NyAwIC0xNzMgLTV6Ii8+CjxwYXRoIGQ9Ik02NjcgMTQxOCBjLTE0NSAtMTQwIC0xNTYgLTE1OSAtMTE3IC0xOTggNDAgLTQwIDYyIC0yOCAyMDEgMTA3IDcxCjY5IDEzMiAxMzcgMTM1IDE1MCA5IDM0IC0yMCA3MyAtNTQgNzMgLTIyIDAgLTU2IC0yNyAtMTY1IC0xMzJ6Ii8+CjxwYXRoIGQ9Ik04OTIgMTQwOCBjLTE5OSAtMTg5IC0yMzUgLTIyNSAtMjQzIC0yNDYgLTE3IC00MyAyOSAtOTAgNzQgLTc2IDEyCjQgODggNzIgMTcwIDE1MiAxNTUgMTU0IDE2NiAxNzMgMTI3IDIxMiAtMzIgMzIgLTU3IDI0IC0xMjggLTQyeiIvPgo8cGF0aCBkPSJNOTMyIDEyMjIgYy0xMzggLTEzNCAtMTcyIC0xNzIgLTE3MiAtMTk0IDAgLTM1IDI0IC01OCA2MiAtNTggMjUgMAo1MSAyMSAxNjIgMTMwIDc4IDc2IDE0MCAxMzAgMTUyIDEzMCAxMSAwIDgyIC00NCAxNTkgLTk4IDc3IC01NCAyMDYgLTE0NCAyODYKLTE5OSA4MCAtNTYgMTUxIC0xMDkgMTU5IC0xMTcgMTEgLTE0IDkgLTI3IC0xNCAtODYgLTc2IC0xOTMgLTI0OCAtMzYzIC00NDUKLTQzOSAtMjkxIC0xMTIgLTY0NCAtMTQgLTg1NCAyMzYgLTQ5IDU5IC0xMzAgMjEzIC0xNDIgMjY5IC0xMiA2MCAtODEgODkKLTExMyA0OCAtNDYgLTYzIDc1IC0zMTQgMjIyIC00NTkgMzAxIC0yOTcgNzY0IC0zNDkgMTA5OCAtMTI0IDgzIDU2IDE4OSAxNTkKMjQ0IDIzNiA3OCAxMDcgMTY0IDMxOCAxNDkgMzYzIC03IDIwIC03NDAgNTMwIC03NjIgNTMwIC0xMCAwIC05NiAtNzYgLTE5MQotMTY4eiIvPgo8cGF0aCBkPSJNMTMwOCA5NDIgYy05IC00IC04MiAtNzEgLTE2MiAtMTUwIC0xMzIgLTEzMCAtMTQ2IC0xNDcgLTE0NiAtMTc4IDAKLTQyIDM1IC02NCA3NSAtNDggMzcgMTQgMzE1IDI5MyAzMTUgMzE2IDAgMTkgLTQyIDY5IC01NyA2NyAtNCAwIC0xNiAtMyAtMjUKLTd6Ii8+CjxwYXRoIGQ9Ik0xMjgzIDY5OCBjLTczIC03MyAtMTM2IC0xNDAgLTEzOSAtMTUwIC0xMCAtMzIgMjIgLTY4IDU5IC02OCAyOCAwCjUwIDE4IDE2NSAxMzEgMTA3IDEwNyAxMzIgMTM3IDEzMiAxNjAgMCAzMCAtMzEgNTkgLTY0IDU5IC0xMSAwIC03MyAtNTQgLTE1MwotMTMyeiIvPgo8L2c+Cjwvc3ZnPgo=)\n![Golang](https://img.shields.io/badge/Go-00ADD8?style=for-the-badge\u0026logo=go\u0026logoColor=white)\n\n\u003c/div\u003e\n\n---\n\n## About\n\nGolang for map and struct  flatten library\n\n## Install\n\n```sh\ngo get -u github.com/cloudmatelabs/gflatten\n```\n\n## Usage\n\n### Insert Map\n\n```go\nimport \"github.com/cloudmatelabs/gflatten\"\n\nsrc := map[string]any{\n\t\"foo\": []any{\n\t\t\"bar\", \"baz\",\n\t},\n\t\"foobar\": map[string]any{\n\t\t\"foo\": []any{\n\t\t\t\"baz\",\n\t\t\tmap[string]any{\n\t\t\t\t\"bar\": map[string]any{\n\t\t\t\t\t\"baz\": \"foobar\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}\noption := gflatten.Option{\n  ParameterDelimiter: \".\",\n  ArrayWrap:          gflatten.WRAP.SQUARE_BRACKET,\n}\n/* postgres style\noption := gflatten.Option{\n  ParameterDelimiter: \"-\u003e\",\n  ArrayDelimiter:     \"-\u003e\",\n  ParameterWrap:      gflatten.WRAP.SINGLE_QUOTE,\n}\n*/\n/* mysql style\noption := gflatten.Option{\n  Prefix:             \"$\",\n  ParameterDelimiter: \".\",\n  ArrayWrap:          gflatten.WRAP.SQUARE_BRACKET,\n}\n*/\ndest, err := gflatten.Flatten(src, option)\n/*\ndest = map[string]any{\n  \"foo[0]\":                \"bar\",\n  \"foo[1]\":                \"baz\",\n  \"foobar.foo[0]\":         \"baz\",\n  \"foobar.foo[1].bar.baz\": \"foobar\",\n}\n*/\n```\n\n### Insert Struct\n\n```go\nimport \"github.com/cloudmatelabs/gflatten\"\n\ntype bar struct {\n\tBaz string `json:\"baz\"`\n}\ntype foobar struct {\n\tFoo []bar `json:\"foo\"`\n}\ntype input struct {\n\tFoo    []string `json:\"foo\"`\n\tFoobar foobar   `json:\"foobar\"`\n}\n\nsrc := input{\n\tFoo: []string{\"bar\", \"baz\"},\n\tFoobar: foobar{\n\t\tFoo: []bar{\n\t\t\t{Baz: \"baz\"},\n\t\t\t{Baz: \"foobar\"},\n\t\t},\n\t},\n}\noption := gflatten.Option{\n  ParameterDelimiter: \".\",\n  ArrayWrap:          gflatten.WRAP.SQUARE_BRACKET,\n}\ndest, err := gflatten.Flatten(src, option)\n/*\ndest = map[string]any{\n  \"foo[0]\":            \"bar\",\n\t\"foo[1]\":            \"baz\",\n\t\"foobar.foo[0].baz\": \"baz\",\n\t\"foobar.foo[1].baz\": \"foobar\",\n}\n*/\n```\n\n## Option\n\n- Prefix(optional)\n- ParameterDelimiter(optional)\n- ArrayDelimiter(optional)\n- ParameterWrap(optional) -\u003e gflatten.WRAP\n- ArrayWrap(optional) -\u003e gflatten.WRAP\n\n### gflatten.WRAP\n\n- SQUARE_BRACKET: []\n- SINGLE_QUOTE: ''\n- DOUBLE_QUOTE: \"\"\n- BACKTICK: ``\n- NONE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahnlabcloudmatelabs%2Fgflatten","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahnlabcloudmatelabs%2Fgflatten","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahnlabcloudmatelabs%2Fgflatten/lists"}