{"id":15748058,"url":"https://github.com/prongbang/csvx","last_synced_at":"2025-03-31T06:42:32.221Z","repository":{"id":87919560,"uuid":"606490843","full_name":"prongbang/csvx","owner":"prongbang","description":"Convert array struct to csv format with Golang","archived":false,"fork":false,"pushed_at":"2024-12-15T06:33:40.000Z","size":45,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T22:52:04.151Z","etag":null,"topics":["convert","csv","go","golang","parse","parser"],"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/prongbang.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":"2023-02-25T16:47:49.000Z","updated_at":"2024-12-15T06:33:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"efa43bc6-9bc0-4491-8746-092b19d0d9b0","html_url":"https://github.com/prongbang/csvx","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fcsvx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fcsvx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fcsvx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fcsvx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prongbang","download_url":"https://codeload.github.com/prongbang/csvx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246429448,"owners_count":20775805,"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":["convert","csv","go","golang","parse","parser"],"created_at":"2024-10-04T05:40:29.440Z","updated_at":"2025-03-31T06:42:32.203Z","avatar_url":"https://github.com/prongbang.png","language":"Go","funding_links":["https://www.buymeacoffee.com/prongbang"],"categories":[],"sub_categories":[],"readme":"# CSVX\n\n[![Go Coverage](https://github.com/prongbang/csvx/wiki/coverage.svg)](https://raw.githack.com/wiki/prongbang/csvx/coverage.html)\n[![Go Report Card](https://goreportcard.com/badge/github.com/prongbang/csvx)](https://goreportcard.com/report/github.com/prongbang/csvx)\n\nConvert array struct to csv format and Parse csv format to array struct with Golang \n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/prongbang)\n\n## Install\n\n```shell\ngo get github.com/prongbang/csvx\n```\n\n## Define struct for Convert\n\nAdd `header` for mapping in csv header and `no` start with 1 for sort header\n\n```go\ntype MyStruct struct {\n    Name  string `json:\"name\" header:\"Name Space\" no:\"2\"`\n    ID    int    `json:\"id\" header:\"ID\" no:\"1\"`\n    Other string\n}\n```\n\n## Support type\n\n- `int`, `int8`, `int16`, `int32`, `int64`\n- `string`\n- `float64`\n\n## Using for Convert\n\n```go\nm := []MyStruct{\n    {ID: 1, Name: \"N1\"}, \n    {ID: 2, Name: \"N2\"}\n}\ncsv := csvx.Convert[MyStruct](m)\n```\n\n## Result\n\n```csv\n\"ID\",\"Name Space\"\n\"1\",\"N1\"\n\"2\",\"N2\"\n```\n\n## Define struct for Parse\n\nAdd `header` for mapping in csv header\n\n```go\ntype Struct struct {\n\tID   string `header:\"ID\"`\n\tName string `header:\"Name Space\"`\n}\n```\n\n## Using for Parse\n\n```go\nrows := [][]string{\n    {\"ID\", \"Name Space\"},\n    {\"1\", \"Name1\"},\n    {\"2\", \"Name2\"},\n    {\"3\", \"Name3\"},\n    {\"4\", \"Name4\"},\n}\ns := csvx.Parser[Struct](rows)\n```\n\n## Result\n\n```json\n[\n  {\"ID\":\"1\",\"Name\":\"Name1\"},\n  {\"ID\":\"2\",\"Name\":\"Name2\"},\n  {\"ID\":\"3\",\"Name\":\"Name3\"},\n  {\"ID\":\"4\",\"Name\":\"Name4\"}\n]\n```\n\n## Benchmark\n\n```shell\ngoos: darwin\ngoarch: arm64\npkg: github.com/prongbang/csvx\ncpu: Apple M1 Pro\nBenchmarkConvert-10          \t  430015\t      5751 ns/op\nBenchmarkManualConvert\nBenchmarkManualConvert-10    \t 2002738\t       614.8 ns/op\nBenchmarkTryConvert\nBenchmarkTryConvert-10    \t      760494\t      1573 ns/op\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprongbang%2Fcsvx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprongbang%2Fcsvx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprongbang%2Fcsvx/lists"}