Skip to content

Commit 0f31d31

Browse files
authored
Merge pull request #76 from onepill/feature/multi-key-different-entry-bug-fix
fixed the bug that searchKeys would return value != -1 when the keys …
2 parents 42b84a5 + da3f5ee commit 0f31d31

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

parser.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ func searchKeys(data []byte, keys ...string) int {
172172
level++
173173
case '}':
174174
level--
175+
if level == keyLevel {
176+
keyLevel--
177+
}
175178
case '[':
176179
// If we want to get array element by index
177180
if keyLevel == level && keys[level][0] == '[' {

parser_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,19 @@ var getTests = []GetTest{
287287
path: []string{"key"},
288288
isFound: false,
289289
},
290+
GetTest{
291+
desc: "handling multiple keys with different name",
292+
json: `{"a":{"a":1},"b":{"a":3,"c":[1,2]}}`,
293+
path: []string{"a", "c"},
294+
isFound: false,
295+
},
296+
GetTest{
297+
desc: "handling nested json",
298+
json: `{"a":{"b":{"c":1},"d":4}}`,
299+
path: []string{"a", "d"},
300+
isFound: true,
301+
data: `4`,
302+
},
290303

291304
// Error/invalid tests
292305
GetTest{

0 commit comments

Comments
 (0)