[][src]Crate jsonpath_lib

JsonPath implementation for Rust

Example

   extern crate jsonpath_lib as jsonpath;
   #[macro_use] extern crate serde_json;

   let json_obj = json!({
   "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
       }
   },
   "expensive": 10
   });

   let mut reader = jsonpath::reader(json_obj);

   //
   // $.store.book[*].author
   //
   let json = reader("$.store.book[*].author").unwrap();
   let ret = json!(["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]);
   assert_eq!(json, ret);

   //
   // $..author
   //
   let json = reader("$..author").unwrap();
   let ret = json!(["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]);
   assert_eq!(json, ret);

   //
   // $.store.*
   //
   let json = reader("$.store.*").unwrap();
   let ret = json!([
       [
        {"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}
       ],
       {"color" : "red","price" : 19.95},
   ]);
   assert_eq!(ret, json);

   //
   // $.store..price
   //
   let json = reader("$.store..price").unwrap();
   let ret = json!([8.95, 12.99, 8.99, 22.99, 19.95]);
   assert_eq!(ret, json);

   //
   // $..book[2]
   //
   let json = reader("$..book[2]").unwrap();
   let ret = json!([{
       "category" : "fiction",
       "author" : "Herman Melville",
       "title" : "Moby Dick",
       "isbn" : "0-553-21311-3",
       "price" : 8.99
   }]);
   assert_eq!(ret, json);

   //
   // $..book[-2]
   //
   let json = reader("$..book[-2]").unwrap();
   let ret = json!([{
       "category" : "fiction",
       "author" : "Herman Melville",
       "title" : "Moby Dick",
       "isbn" : "0-553-21311-3",
       "price" : 8.99
    }]);
   assert_eq!(ret, json);

   //
   // $..book[0,1]
   //
   let json = reader("$..book[0,1]").unwrap();
   let ret = json!([
       {"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}
   ]);
   assert_eq!(ret, json);

   //
   // $..book[:2]
   //
   let json = reader("$..book[:2]").unwrap();
   let ret = json!([
       {"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}
   ]);
   assert_eq!(ret, json);

   //
   // $..book[2:]
   //
   let json = reader("$..book[2:]").unwrap();
   let ret = json!([
       {"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}
   ]);
   assert_eq!(ret, json);

   //
   // $..book[?(@.isbn)]
   //
   let json = reader("$..book[?(@.isbn)]").unwrap();
   let ret = json!([
       {"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}
   ]);
   assert_eq!(ret, json);

   //
   // $.store.book[?(@.price < 10)]
   //
   let json = reader("$.store.book[?(@.price < 10)]").unwrap();
   let ret = json!([
       {"category" : "reference","author" : "Nigel Rees","title" : "Sayings of the Century","price" : 8.95},
       {"category" : "fiction","author" : "Herman Melville","title" : "Moby Dick","isbn" : "0-553-21311-3","price" : 8.99}
   ]);
   assert_eq!(ret, json);

Functions

compile

Read multiple Json multiple times with the same JsonPath

read

Read Json using JsonPath

reader

Read the same Json multiple times using different JsonPath