{"id":18305864,"url":"https://github.com/derekstavis/go-qs","last_synced_at":"2025-04-05T16:32:49.431Z","repository":{"id":57481097,"uuid":"74365598","full_name":"derekstavis/go-qs","owner":"derekstavis","description":"A Go port of Rack's query string parser","archived":false,"fork":false,"pushed_at":"2018-07-20T19:22:46.000Z","size":151,"stargazers_count":102,"open_issues_count":0,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-21T06:51:20.780Z","etag":null,"topics":["go","golang","parser","query","querystring","url","urlencoded"],"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/derekstavis.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}},"created_at":"2016-11-21T13:20:43.000Z","updated_at":"2025-03-20T04:34:41.000Z","dependencies_parsed_at":"2022-09-26T17:41:27.392Z","dependency_job_id":null,"html_url":"https://github.com/derekstavis/go-qs","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekstavis%2Fgo-qs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekstavis%2Fgo-qs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekstavis%2Fgo-qs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekstavis%2Fgo-qs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derekstavis","download_url":"https://codeload.github.com/derekstavis/go-qs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247366929,"owners_count":20927625,"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":["go","golang","parser","query","querystring","url","urlencoded"],"created_at":"2024-11-05T15:35:56.617Z","updated_at":"2025-04-05T16:32:48.864Z","avatar_url":"https://github.com/derekstavis.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cimg alt=\"Guitar String\" src=\"https://cloud.githubusercontent.com/assets/1611639/20510991/96515948-b05b-11e6-8eaf-debc9a84f61c.png\" align=\"right\" /\u003e\n\n# go-qs\n\nGo port of Rack's query strings\n\n[![Build Status](https://travis-ci.org/derekstavis/go-qs.svg?branch=master)](https://travis-ci.org/derekstavis/go-qs)\n\n\nThis package was written as I haven't found a good package that understands\n[Rack/Rails](http://guides.rubyonrails.org/form_helpers.html#understanding-parameter-naming-conventions) query string [format](https://gist.github.com/dapplebeforedawn/3724090).\n\nIt have been designed to marshal and unmarshal nested query strings from/into\n`map[string]interface{}`, inspired on the interface of Go builtin `json`\npackage.\n\n## Compatibility\n\n`go-qs` is a port of [Rack's code](https://github.com/rack/rack/blob/rack-1.3/lib/rack/utils.rb#L114).\nAll tests included into [test suite](https://github.com/derekstavis/go-qs/blob/master/marshal_test.go)\nare also a port of [Rack tests](https://github.com/rack/rack/blob/rack-1.3/test/spec_utils.rb#L107),\nso this package keeps great compatibility with Rack implementation.\n\n## Usage\n\n### Unmarshal\n\nTo unmarshal query strings to a `map[string]interface{}`:\n\n```go\npackage main\n\nimport (\n  \"fmt\"\n  \"github.com/derekstavis/go-qs\"\n)\n\nquery, err := qs.Unmarshal(\"foo=bar\u0026names[]=foo\u0026names[]=bar\")\n\nif err != nil {\n  fmt.Printf(\"%#+v\\n\", query)\n}\n```\n\nThe output:\n\n```\nmap[string]interface {}{\"foo\":\"bar\", \"names\":[]interface {}{\"foo\", \"bar\"}}\n```\n\n### Marshal\n\nYou can also marshal a `map[string]interface{}` to a query string:\n\n```go\npackage main\n\nimport (\n  \"fmt\"\n  \"github.com/derekstavis/go-qs\"\n)\n\npayload := map[string]interface {}{\"foo\":\"bar\", \"names\":[]interface {}{\"foo\", \"bar\"}}\n\nquerystring, err := qs.Marshal(payload)\n\nif err != nil {\n  fmt.Printf(querystring)\n}\n```\n\nThe output:\n\n```\nfoo=bar\u0026names[]=foo\u0026names[]=bar\n```\n\n## License\n\n```\nMIT Copyright (c) 2016 Derek W. Stavis\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekstavis%2Fgo-qs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderekstavis%2Fgo-qs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekstavis%2Fgo-qs/lists"}