UT added
This commit is contained in:
parent
ea38b12f7c
commit
6d10ae85ba
12
gjson.go
12
gjson.go
@ -1002,12 +1002,10 @@ func parseObject(c *parseContext, i int, path string) (int, bool) {
|
|||||||
if ok {
|
if ok {
|
||||||
res := res.Get(rp.alogkey)
|
res := res.Get(rp.alogkey)
|
||||||
if res.Exists() {
|
if res.Exists() {
|
||||||
if k > 0 && len(res.String()) > 0 {
|
if k > 0 && len(res.String()) > 0 && len(jsons) > 0 {
|
||||||
jsons = append(jsons, ',')
|
jsons = append(jsons, ',')
|
||||||
}
|
}
|
||||||
if res.Type == JSON {
|
if res.Type == JSON || res.Type == String {
|
||||||
jsons = append(jsons, []byte(res.Raw)...)
|
|
||||||
} else if res.Type == String {
|
|
||||||
jsons = append(jsons, []byte(res.Raw)...)
|
jsons = append(jsons, []byte(res.Raw)...)
|
||||||
} else if res.Type == Number {
|
} else if res.Type == Number {
|
||||||
jsons = append(jsons, []byte(res.String())...)
|
jsons = append(jsons, []byte(res.String())...)
|
||||||
@ -1021,9 +1019,6 @@ func parseObject(c *parseContext, i int, path string) (int, bool) {
|
|||||||
c.value.Raw = stringArray(jsons)
|
c.value.Raw = stringArray(jsons)
|
||||||
return i + 1, true
|
return i + 1, true
|
||||||
}
|
}
|
||||||
//if rp.alogok {
|
|
||||||
// break
|
|
||||||
//}
|
|
||||||
c.value.Raw = ""
|
c.value.Raw = ""
|
||||||
c.value.Type = Number
|
c.value.Type = Number
|
||||||
c.value.Num = float64(h - 1)
|
c.value.Num = float64(h - 1)
|
||||||
@ -1084,9 +1079,6 @@ func parseObject(c *parseContext, i int, path string) (int, bool) {
|
|||||||
} else {
|
} else {
|
||||||
i, val = parseSquash(c.json, i)
|
i, val = parseSquash(c.json, i)
|
||||||
if hit {
|
if hit {
|
||||||
//if rp.alogok {
|
|
||||||
// break
|
|
||||||
//}
|
|
||||||
if len(c.value.Raw) > 1 {
|
if len(c.value.Raw) > 1 {
|
||||||
c.value.Raw = c.value.Raw + "," + val
|
c.value.Raw = c.value.Raw + "," + val
|
||||||
} else {
|
} else {
|
||||||
|
@ -813,9 +813,9 @@ func TestIssue20(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestIssue21(t *testing.T) {
|
func TestIssue21(t *testing.T) {
|
||||||
json := `{ "Level1Field1":3,
|
json := `{ "Level1Field1":3,
|
||||||
"Level1Field4":4,
|
"Level1Field4":4,
|
||||||
"Level1Field2":{ "Level2Field1":[ "value1", "value2" ],
|
"Level1Field2":{ "Level2Field1":[ "value1", "value2" ],
|
||||||
"Level2Field2":{ "Level3Field1":[ { "key1":"value1" } ] } } }`
|
"Level2Field2":{ "Level3Field1":[ { "key1":"value1" } ] } } }`
|
||||||
paths := []string{"Level1Field1", "Level1Field2.Level2Field1", "Level1Field2.Level2Field2.Level3Field1", "Level1Field4"}
|
paths := []string{"Level1Field1", "Level1Field2.Level2Field1", "Level1Field2.Level2Field2.Level3Field1", "Level1Field4"}
|
||||||
expected := []string{"3", `[ "value1", "value2" ]`, `[ { "key1":"value1" } ]`, "4"}
|
expected := []string{"3", `[ "value1", "value2" ]`, `[ { "key1":"value1" } ]`, "4"}
|
||||||
@ -914,7 +914,7 @@ var complicatedJSON = `
|
|||||||
"nestedTagged": {
|
"nestedTagged": {
|
||||||
"Green": "Green",
|
"Green": "Green",
|
||||||
"Map": {
|
"Map": {
|
||||||
"this": "that",
|
"this": "that",
|
||||||
"and": "the other thing"
|
"and": "the other thing"
|
||||||
},
|
},
|
||||||
"Ints": {
|
"Ints": {
|
||||||
@ -1315,6 +1315,90 @@ func TestObjectGrouping(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMultiObjectsExtraction(t *testing.T) {
|
||||||
|
var res Result
|
||||||
|
|
||||||
|
carsJson := `
|
||||||
|
{
|
||||||
|
"paths": {
|
||||||
|
"/cars": {
|
||||||
|
"get": {
|
||||||
|
"description": "Get cars"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "Create a car"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/owners": {
|
||||||
|
"get": {
|
||||||
|
"description": "Get owners"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"desc": "Create a owner"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/models": {
|
||||||
|
"get": {
|
||||||
|
"desc": "Get a model",
|
||||||
|
"param": [
|
||||||
|
{
|
||||||
|
"name": "per_page",
|
||||||
|
"default": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "page",
|
||||||
|
"default": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "application",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "Create a model"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
res = Get(carsJson, "paths.*.get.description")
|
||||||
|
if res.String() != `["Get cars","Get owners"]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `["Get cars","Get owners"]`, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Get(carsJson, "paths./mod*.post.description")
|
||||||
|
if res.String() != `["Create a model"]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `["tom","janet"]`, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Get(carsJson, "paths./md*.post.description")
|
||||||
|
if res.String() != `` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", ``, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Get(carsJson, "paths.*.*.desc")
|
||||||
|
if res.String() != `["Create a owner"],["Get a model"]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `["Create a owner"],["Get a model"]`, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Get(carsJson, "paths.*.get.param.#[name=page].default")
|
||||||
|
if res.String() != `[1]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `[1]`, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Get(carsJson, "paths.*.get.param.#[name%\"pag*\"].default")
|
||||||
|
if res.String() != `[1]` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", `[1]`, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Get(carsJson, "paths.*.get.param.#[name=pages].default")
|
||||||
|
if res.String() != `` {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", ``, res.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func TestJSONLines(t *testing.T) {
|
func TestJSONLines(t *testing.T) {
|
||||||
json := `
|
json := `
|
||||||
true
|
true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user