Better support for array and struct serialization

This patch allows better encoding of nested structs and arrays to follow
[conventions followed by frameworks like Rails][1] when parsing query
strings such as ```ids[]=1&ids[]=2&ids[]=3``` for arrays and
```user[name]=acme&user[addr][postcode]=1234&user[addr][city]=SFO``` for
hashes.

Changes:

 * Encode nested attributes: ```Parameter.Nested.Value = "str"``` would
 be encoded as ```parameter[nested][value]=str```
 * New ```brackets``` tag option for arrays so that in stead of encoding
 an array as ```a=one&a=two``` it's encoded as ```a[]=one&a[]=two```
 which are read

[1]: http://guides.rubyonrails.org/action_controller_overview.html#hash-and-array-parameters
2 files changed
tree: bfd79ead1253e67c38f4198ff63619ce1fad6c81
  1. query/
  2. .gitignore
  3. CONTRIBUTING.md
  4. LICENSE
  5. README.md
README.md

go-querystring

go-querystring is Go library for encoding structs into URL query parameters.

Documentation: http://godoc.org/github.com/google/go-querystring/query
Build Status: Build Status

Usage

import "github.com/google/go-querystring/query"

go-querystring is designed to assist in scenarios where you want to construct a URL using a struct that represents the URL query parameters. You might do this to enforce the type safety of your parameters, for example, as is done in the go-github library.

The query package exports a single Values() function. A simple example:

type Options struct {
  Query   string `url:"q"`
  ShowAll bool   `url:"all"`
  Page    int    `url:"page"`
}

opt := Options{ "foo", true, 2 }
v, _ := query.Values(opt)
fmt.Print(v.Encode()) // will output: "q=foo&all=true&page=2"

License

This library is distributed under the BSD-style license found in the LICENSE file.