google / go-querystring

go-querystring is Go library for encoding structs into URL query strings.
https://pkg.go.dev/github.com/google/go-querystring/query
BSD 3-Clause "New" or "Revised" License
1.96k stars 172 forks source link

Adding support to encoding of nested struct arrays #8

Open etxnija opened 9 years ago

etxnija commented 9 years ago

I plan to fix the issue described below for encoding nested struct arrays.

Currently this structure

type Nested struct {
    A string `url:"theA,omitempty"`
    B string `url:"theB,omitempty"`
}
type NestedArr []Nested
na := struct {
        A NestedArr `url:"arr"`
        B Nested    `url:"nested"`
    }{
        A: NestedArr{Nested{
            A: "aa",
            B: "bb",
        }, Nested{
            A: "aaa",
            B: "bbb"}},
        B: Nested{
            A: "zz",
            B: "xx",
        },
    }

encode to

arr={aa bb}&arr={aaa bbb}&nested[theA]=zz&nested[theB]=xx

To be consistent with the Ruby style parsing the result should look like this

 arr[0][theA]=aa&arr[0][theB]=bb&arr[1][theA]=aaa&arr[1][theB]=bbb&nested[theA]=zz&nested[theB]=xx
tamalsaha commented 7 years ago

@etxnija , this is a very old bug. We needed similar ruby like encoding. We have addressed this in our fork https://github.com/appscode/go-querystring .

willnorris commented 3 years ago

I'll leave this issue open for anyone that still needs this and wants to implement.

Looks like @tamalsaha's initial implementation was pretty simple: https://github.com/appscode/go-querystring/pull/2

kokizzu commented 2 years ago

@tamalsaha that one also give wrong for []string it gives something like this a%5B0%5D=1 instead of a[]=1