diff --git a/gojo_test.go b/gojo_test.go index 58950f9..e77d021 100644 --- a/gojo_test.go +++ b/gojo_test.go @@ -111,8 +111,8 @@ func TestGojoRun(t *testing.T) { }, { name: "deep keys", - args: []string{`a[b][c]d=e`, `a[b][c][d]=f`, `b[c][d][][]=f`, `b[c][d][]=g`, `c[][][]=d`}, - expected: `{"a[b][c]d":"e","a":{"b":{"c":{"d":"f"}}},"b":{"c":{"d":[["f"],"g"]}},"c":[[["d"]]]} + args: []string{`a[b][c]d=e`, `a[b][c][d]=f`, `b[c][d][][]=f`, `b[c][d][]=g`, `c[][][]=d`, `[][][]=h`, `[][1][2]=i`}, + expected: `{"a[b][c]d":"e","a":{"b":{"c":{"d":"f"}}},"b":{"c":{"d":[["f"],"g"]}},"c":[[["d"]]],"":[[["h"]],{"1":{"2":"i"}}]} `, }, { diff --git a/parse.go b/parse.go index edfdf82..ddee739 100644 --- a/parse.go +++ b/parse.go @@ -73,7 +73,7 @@ func buildSetter(key string, value interface{}, inner bool) setter { } return &objectSetter{key, value} } - if i > 0 { + if i > 0 || !inner { s := buildSetter(key[i:], value, true) if s == nil { if inner {