go-querystring icon indicating copy to clipboard operation
go-querystring copied to clipboard

Adding support to encoding of nested struct arrays

Open etxnija opened this issue 9 years ago • 3 comments

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

etxnija avatar Aug 24 '15 15:08 etxnija

@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 .

tamalsaha avatar May 04 '17 05:05 tamalsaha

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

willnorris avatar Feb 24 '21 00:02 willnorris

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

kokizzu avatar Jun 09 '22 14:06 kokizzu