mirror of https://github.com/k3s-io/k3s
![]() |
||
---|---|---|
.. | ||
lib | ||
test | ||
.bower.json | ||
.gitignore | ||
.npmignore | ||
.travis.yml | ||
CHANGES.md | ||
README.md | ||
package.json |
README.md
JSONPath ![build status](https://secure.travis-ci.org/s3u/JSONPath.png)
Analyse, transform, and selectively extract data from JSON documents (and JavaScript objects).
Install
npm install JSONPath
Usage
In node.js:
var JSONPath = require('JSONPath');
JSONPath({json: obj, path: path});
For browser usage you can directly include lib/jsonpath.js
, no browserify
magic necessary:
<script src="lib/jsonpath.js"></script>
<script>
JSONPath({json: obj, path: path});
</script>
Examples
Given the following JSON, taken from http://goessner.net/articles/JsonPath/ :
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
XPath | JSONPath | Result |
---|---|---|
/store/book/author | $.store.book[*].author | the authors of all books in the store |
//author | $..author | all authors |
/store/* | $.store.* | all things in store, which are some books and a red bicycle. |
/store//price | $.store..price | the price of everything in the store. |
//book[3] | $..book[2] | the third book |
//book[last()] | $..book[(@.length-1)] | the last book in order. |
$..book[-1:] | ||
//book[position()<3] | $..book[0,1] | the first two books |
$..book[:2] | ||
//book[isbn] | $..book[?(@.isbn)] | filter all books with isbn number |
//book[price<10] | $..book[?(@.price<10)] | filter all books cheapier than 10 |
//*[price>19]/.. | $..[?(@.price>19)]^ | categories with things more expensive than 19 |
//* | $..* | all Elements in XML document. All members of JSON structure. |
Development
Running the tests on node: npm test
. For in-browser tests:
- Ensure that nodeunit is browser-compiled:
cd node_modules/nodeunit; make browser;
- Serve the js/html files:
node -e "require('http').createServer(function(req,res) { \
var s = require('fs').createReadStream('.' + req.url); \
s.pipe(res); s.on('error', function() {}); }).listen(8082);"
- To run the tests visit http://localhost:8082/test/test.html.