/JsonPath

Java JsonPath implementation

Primary LanguageJavaApache License 2.0Apache-2.0

Java DSL for reading and testing JSON documents.

------------------------------------------
0.9.0                       2013-09-26
------------------------------------------
- OSGI ready
- Bug fixes
- Performance improvements

- select multiple attributes
    List<Map<String, Object>> matches = JsonPath.read(DOCUMENT, "$.store.book[*].['category', 'title']");
    Map<String, Object> match = JsonPath.read(DOCUMENT, "$.store.bicycle['color', 'display-price']");

- Array operations and slicing improved
    String JSON_ARRAY = "[1, 3, 5, 7, 8, 13, 20]";

    //no slicing
    JsonPath.read(JSON_ARRAY, "$[3]")     => 7			

    //no slicing, multi index	
    JsonPath.read(JSON_ARRAY, "$[0,1,2]") => [1,3,5]		

    //from index 0 (inclusive) until index 3 (exclusive)
    JsonPath.read(JSON_ARRAY, "$[:3]")    => [1,3,5]

    //from index 1 (inclusive) until index 5 (exclusive)		
    JsonPath.read(JSON_ARRAY, "$[1:5]")   => [3, 5, 7, 8]	
    JsonPath.read(JSON_ARRAY, "$[1:15]")  => [3, 5, 7, 8, 13, 20]

     //from tail grab 3 
    JsonPath.read(JSON_ARRAY, "$[-3:]")   => [8, 13, 20]	

    //grab no 3 from tail
    JsonPath.read(JSON_ARRAY, "$[3:]")    => 8		
	
    //grab no 3 from tail (same as above)	
    JsonPath.read(JSON_ARRAY, "$[(@.length -3)]") => 		

- improved filter on primitives. Now you can compare with @
    String json = "{\"contents\": [1,2,3]}";
    List<Integer> result = JsonPath.read(json, "$.contents[?(@ == 2)]");



------------------------------------------
0.8.1                           2012-04-16
------------------------------------------
- Fixed issue http://code.google.com/p/json-path/issues/detail?id=11
- HttpProvider SPI
- Improved JavaDoc
- More experimental work on JsonModel


------------------------------------------
0.8.0                           2012-03-08
------------------------------------------
- Fixed issue http://code.google.com/p/json-path/issues/detail?id=8
- Fixed issue http://code.google.com/p/json-path/issues/detail?id=9
- Improved compliance
- Fixed bug with '=' sign when evaluating expressions
- OSGi support added
- Support for custom array filters in JsonPath
- Lots of new features in JsonModel


------------------------------------------
0.5.6                           2012-02-09
------------------------------------------
- Replaced regexp with custom tokenizer
- Removed static declaration of JSON_PARSER
- Introduced SPI for JsonProvider
- Elaborating new concept with JsonModel

------------------------------------------
0.5.5
------------------------------------------
- Improved JSON bracket notation. $['store']['book'][*]['author name']
  properties can also contain '.' eg $['store']['book'][*]['author.name']

------------------------------------------
0.5.4
------------------------------------------
- Replaced com.googlecode.json-simple with net.minidev.json-smart
- Introduced different parse modes, JsonPath.SLACK_MODE and JsonPath.STRICT_MODE (the slack mode lets you use single quotes or even no quotes at all)

------------------------------------------
0.5.3
------------------------------------------
- Major refactoring
- JsonPath does not always produce a List as response

------------------------------------------
0.5.2
------------------------------------------
- Fixed issue that path was never considered definite if containing a ':'
- Bracket notation is now first class citizen $.foo.bar == $.['foo'].['bar']
- Added JsonAsserter.assertNotDefined(String path) to allow checks for negative existence of a path