-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
Hi. Thanks for this helpful library.
Please see the following 3 code snippets. The second version fails. I am trying to apply a sub-template transformation to a filtered (via jsonpath notation) array and it fails. Without the filter, it works.
var transform = require('jsonpath-object-transform');
var o = {"cities": [
{"city": "Toronto", "population": 2.5},
{"city": "New York", "population":8.1},
{"city": "San Diego", "population": 1.6},
{"city": "Seattle", "population": 0.65}
]};
// works
var template = {
bigCities: ["$.cities[?(@.population > 2)]"]
};
var r = transform(o, template);
console.log(JSON.stringify(r, null, 4));Results in:
{
"bigCities": [
{
"city": "Toronto",
"population": 2.5
},
{
"city": "New York",
"population": 8.1
}
]
}var transform = require('jsonpath-object-transform');
var o = {"cities": [
{"city": "Toronto", "population": 2.5},
{"city": "New York", "population":8.1},
{"city": "San Diego", "population": 1.6},
{"city": "Seattle", "population": 0.65}
]};
// fails
var template = {
bigCities: ["$.cities[?(@.population > 2)]", {"name": "city"}]
};
var r = transform(o, template);
console.log(JSON.stringify(r, null, 4));results in
TypeError: seek[0].forEach is not a function
at seekArray (/Users/dwayne/tmp/test/node_modules/jsonpath-object-transform/lib/jsonpath-object-transform.js:96:15)
at walk (/Users/dwayne/tmp/test/node_modules/jsonpath-object-transform/lib/jsonpath-object-transform.js:52:7)
at /Users/dwayne/tmp/test/node_modules/jsonpath-object-transform/lib/jsonpath-object-transform.js:118:7
at Array.forEach (native)
at seekObject (/Users/dwayne/tmp/test/node_modules/jsonpath-object-transform/lib/jsonpath-object-transform.js:117:26)
at walk (/Users/dwayne/tmp/test/node_modules/jsonpath-object-transform/lib/jsonpath-object-transform.js:52:7)
at /Users/dwayne/tmp/test/node_modules/jsonpath-object-transform/lib/jsonpath-object-transform.js:131:5
at Object.<anonymous> (/Users/dwayne/tmp/test/json-transform.js:17:9)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)var transform = require('jsonpath-object-transform');
var o = {"cities": [
{"city": "Toronto", "population": 2.5},
{"city": "New York", "population":8.1},
{"city": "San Diego", "population": 1.6},
{"city": "Seattle", "population": 0.65}
]};
// works
var template = {
bigCities: ["$.cities", {"name": "city"}]
};
var r = transform(o, template);
console.log(JSON.stringify(r, null, 4));results in
{
"bigCities": [
{
"name": "Toronto"
},
{
"name": "New York"
},
{
"name": "San Diego"
},
{
"name": "Seattle"
}
]
}Metadata
Metadata
Assignees
Labels
No labels