-
Notifications
You must be signed in to change notification settings - Fork 150
Closed
Description
With input like this:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888",
"third": {
"deep": "third level"
}
},
{
"type" : "home",
"number": "0123-4567-8910"
}
],
"last": "this should be last"
}
And a query of:
$..*@string()
You would expect to get this for output paths:
[
"$['firstName']",
"$['lastName']",
"$['address']['streetAddress']",
"$['address']['city']",
"$['address']['postalCode']",
"$['phoneNumbers'][0]['type']",
"$['phoneNumbers'][0]['number']",
"$['phoneNumbers'][0]['third']['deep']",
"$['phoneNumbers'][1]['type']",
"$['phoneNumbers'][1]['number']",
"$['last']"
]
Instead, you get this:
[
"$['firstName']",
"$['lastName']",
"$['last']",
"$['address']['streetAddress']",
"$['address']['city']",
"$['address']['postalCode']",
"$['phoneNumbers'][0]['type']",
"$['phoneNumbers'][0]['number']",
"$['phoneNumbers'][0]['third']['deep']",
"$['phoneNumbers'][1]['type']",
"$['phoneNumbers'][1]['number']"
]
At first I thought it was doing "breadth first" instead of "depth first" recursion, but this isn't consistent either. It does all the first level items "breadth first" but then does nested data "depth first". Note where "$['phoneNumbers'][0]['third']['deep']"
appears in the list.
Metadata
Metadata
Assignees
Labels
No labels