mirror of https://github.com/tidwall/gjson.git
Fix non-existent selectors results
This commit is contained in:
parent
40764d5d56
commit
89b19799ff
7
gjson.go
7
gjson.go
|
@ -1323,7 +1323,6 @@ func parseArray(c *parseContext, i int, path string) (int, bool) {
|
||||||
if rp.alogok {
|
if rp.alogok {
|
||||||
var jsons = make([]byte, 0, 64)
|
var jsons = make([]byte, 0, 64)
|
||||||
jsons = append(jsons, '[')
|
jsons = append(jsons, '[')
|
||||||
|
|
||||||
for j, k := 0, 0; j < len(alog); j++ {
|
for j, k := 0, 0; j < len(alog); j++ {
|
||||||
_, res, ok := parseAny(c.json, alog[j], true)
|
_, res, ok := parseAny(c.json, alog[j], true)
|
||||||
if ok {
|
if ok {
|
||||||
|
@ -1332,7 +1331,11 @@ func parseArray(c *parseContext, i int, path string) (int, bool) {
|
||||||
if k > 0 {
|
if k > 0 {
|
||||||
jsons = append(jsons, ',')
|
jsons = append(jsons, ',')
|
||||||
}
|
}
|
||||||
jsons = append(jsons, []byte(res.Raw)...)
|
raw := res.Raw
|
||||||
|
if len(raw) == 0 {
|
||||||
|
raw = res.String()
|
||||||
|
}
|
||||||
|
jsons = append(jsons, []byte(raw)...)
|
||||||
k++
|
k++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1504,3 +1504,26 @@ func TestChaining(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestArrayEx(t *testing.T) {
|
||||||
|
s := `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"c":[
|
||||||
|
{"a":10.11}
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
"c":[
|
||||||
|
{"a":11.11}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]`
|
||||||
|
res := Get(s, "@ugly|#.c.#[a=10.11]").String()
|
||||||
|
if res != `[{"a":10.11}]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `[{"a":10.11}]`, res)
|
||||||
|
}
|
||||||
|
res = Get(s, "@ugly|#.c.#").String()
|
||||||
|
if res != `[1,1]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `[1,1]`, res)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue