package Ġcom . nf eld . json path kt Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . node .* Ċ import Ġcom . nf eld . json path kt . cache . Cache Provider Ċ import Ġcom . nf eld . json path kt . extension . read Ċ import Ġcom . nf eld . json path kt . util . Jack son Util Ċ import Ġcom . nf eld . json path kt . util . Root Level Array Node Ċ import Ġio . kot est . core . spec . style . Describe Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ data Ġclass ĠPo jo Class 1 ( val Ġkey : ĠString ) Ċ data Ġclass ĠPo jo Class 2 ( val Ġkey : ĠList < Any ?> ) Ċ data Ġclass ĠPo jo Class 3 ( val Ġkey : ĠMap < String , ĠInt >, Ġval Ġdefault : ĠInt ) Ċ Ċ class ĠJson Path Test Ġ: ĠDescribe Spec ({ ĊĠĠĠ Ġbefore Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠCache Provider . set Cache ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Core Ġparse Ġtests ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġon Ġparse Ġfailure ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 5 {} ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 5 [] ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("$ ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("{ ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("{ ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("[ }") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" null ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( null ) ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġif Ġroot Ġnode Ġis ĠMissing Ġor ĠNull ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path ("$ "). read FromJson < Any >( Jack son Util . mapper . missing Node ()) ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path ("$ "). read FromJson < Any >( Jack son Util . mapper . null Node ()) ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġwhen Ġparsing Ġroot Ġstring Ġbut Ġwithout Ġquotes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" hello ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġparse Ġroot Ġstring Ġwith Ġquotes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" """ hello """ ") ĠshouldBe ĠText Node (" hello ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" """ hello """ ") !!. read < String >(" $ ") ĠshouldBe Ġ" hello " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġparse Ġroot Ġvalues Ġother Ġthan ĠString ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 4 ") ĠshouldBe ĠInt Node ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 4 ") !!. read < Int >(" $ ") ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 4 . 7 6 ") ĠshouldBe ĠDouble Node ( 4 . 7 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 4 . 7 6 ") !!. read < Double >(" $ ") ĠshouldBe Ġ 4 . 7 6 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" true ") ĠshouldBe ĠBoolean Node . TRUE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" true ") !!. read < Boolean >(" $ ") ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" false ") ĠshouldBe ĠBoolean Node . FALSE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" false ") !!. read < Boolean >(" $ ") ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġable Ġto Ġget ĠObject Node ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON ) !!. read < Object Node >(" $ ") ĠshouldBe Ġread Tree ( SMALL _ JSON ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġable Ġto Ġget ĠArray Node ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Array Node >(" $ ") ĠshouldBe Ġread Tree ( SMALL _ JSON _ ARRAY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġable Ġto Ġget Ġinner ĠObject Nodes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" [{" outer ": Ġ{" inner ": Ġ 9 } Ġ}] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Object Node >(" $[ 0 ]") ĠshouldBe Ġread Tree ( json )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Object Node >(" $[ 0 ]. outer ") ĠshouldBe Ġread Tree ( json )[ 0 ][" outer "] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġvalues Ġdeep Ġin ĠJSON ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < String >(" $[ 0 ]. friends [ 1 ]. other . a . b [' c '] ") ĠshouldBe Ġ" yo " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < String >(" $[ 0 ]. friends [- 1 ][' name '] ") ĠshouldBe Ġ" Har re ll ĠPr att " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġpreserve Ġorder ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( BOOK S _ JSON ) !!. read < List < Double >> (" $. store .. price ") ĠshouldBe ĠlistOf ( 8 . 9 5 , Ġ 1 2 . 9 9 , Ġ 8 . 9 9 , Ġ 2 2 . 9 9 , Ġ 1 9 . 9 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" d ": Ġ 4 , Ġ" f ": Ġ 6 , Ġ" e ": Ġ 5 , Ġ" a ": Ġ 1 , Ġ" b ": Ġ 2 , Ġ" c ": Ġ 3 } """) !!. read < List < Int >> ("$ .* ") ĠshouldBe ĠlistOf ( 4 , 6 , 5 , 1 , 2 , 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" returned ĠRoot Level Array Node Ġshould Ġbe ĠArray Node Ġsince Ġinternal ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" d ": Ġ 4 , Ġ" f ": Ġ 6 , Ġ" e ": Ġ 5 , Ġ" a ": Ġ 1 , Ġ" b ": Ġ 2 , Ġ" c ": Ġ 3 } """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ"[ 4 , 6 , 5 , 1 , 2 , 3 ]" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Json Path . parse (""" {" d ": Ġ 4 , Ġ" f ": Ġ 6 , Ġ" e ": Ġ 5 , Ġ" a ": Ġ 1 , Ġ" b ": Ġ 2 , Ġ" c ": Ġ 3 } """) !!. read < JsonNode >(" $ .* ") Ġis ĠArray Node ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Json Path . parse (""" {" d ": Ġ 4 , Ġ" f ": Ġ 6 , Ġ" e ": Ġ 5 , Ġ" a ": Ġ 1 , Ġ" b ": Ġ 2 , Ġ" c ": Ġ 3 } """) !!. read < JsonNode >(" $ .* ") Ġis ĠRoot Level Array Node ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Json Path . parse (""" [ 1 , 2 , 3 , 4 ] """) !!. read < JsonNode >(" $ .* ") Ġis ĠRoot Level Array Node ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Type Ġcasting ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" int ": Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" string ": Ġ" hello ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" boolean ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" double ": Ġ 6 . 3 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" char ": Ġ" a " ĊĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġit (" casts Ġto ĠInt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Int >(" $. int ") ĠshouldBe Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Int >(" $. string ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Int >(" $. boolean ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Int >(" $. double ") ĠshouldBe Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Int >(" $. char ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" casts Ġto ĠDouble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Double >(" $. int ") ĠshouldBe Ġ 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Double >(" $. string ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Double >(" $. boolean ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Double >(" $. double ") ĠshouldBe Ġ 6 . 3 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Double >(" $. char ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" casts Ġto ĠBoolean ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Boolean >(" $. int ") ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Boolean >(" $. string ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Boolean >(" $. boolean ") ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Boolean >(" $. double ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Boolean >(" $. char ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" casts Ġto ĠChar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Char >(" $. int ") ĠshouldBe Ġ 5 . to Char () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Char >(" $. string ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Char >(" $. boolean ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Char >(" $. double ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < Char >(" $. char ") ĠshouldBe Ġ' a ' ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" everything Ġcan Ġbe Ġcast Ġto ĠString ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. int ") ĠshouldBe Ġ" 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. string ") ĠshouldBe Ġ" hello " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. boolean ") ĠshouldBe Ġ" true " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. double ") ĠshouldBe Ġ" 6 . 3 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. char ") ĠshouldBe Ġ" a " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġcast ĠPO JO ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": Ġ" value "} """) !!. read < Po jo Class 1 >(" $ ") ĠshouldBe ĠPo jo Class 1 ( key Ġ= Ġ" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": Ġ[ 1 , Ġ" random ", Ġnull , Ġ 1 . 7 6 5 ]} """) !!. read < Po jo Class 2 >(" $ ") ĠshouldBe ĠPo jo Class 2 ( key Ġ= ĠlistOf < Any ? >( 1 , Ġ" random ", Ġnull , Ġ 1 . 7 6 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": Ġ{ Ġ" a ": Ġ 1 , Ġ" b ": Ġ 2 Ġ}, Ġ" default ": Ġ 3 } """) !!. read < Po jo Class 3 >(" $ ") ĠshouldBe ĠPo jo Class 3 ( key Ġ= Ġmap Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 ), Ġdefault Ġ= Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Object Ġaccessors ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġof Ġkey Ġdoesn 't Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON ) !!. read < Any >(" $. unknown key ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON ) !!. read < Any >(" $ [' unknown key '] ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġvalue Ġif Ġkey Ġexists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON ) !!. read < Int >(" $. key ") ĠshouldBe Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON ) !!. read < Int >(" $ [' key '] ") ĠshouldBe Ġ 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġif Ġreading Ġnull Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": null } """) !!. read < Int >(" $ [' key '] ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġaccess Ġempty Ġstring Ġkey Ġand Ġother Ġun common Ġkeys ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" ": 4 } """) !!. read < Int >(" $ [' '] ") ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" ": 4 } """) !!. read < Int >(" $[ \"\ "] ") ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" ' ": 4 } """) !!. read < Int >(" $ [\" '\ "] ") ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" ' ": 4 } """) !!. read < Int >(" $ [' \\ ' '] ") ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" \" ": Ġ 4 } """) !!. read < Int >(" "" $ [" \"" ] """) ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" \" ": Ġ 4 } """) !!. read < Int >(" "" $ [' " '] """) ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" \\ ": Ġ 4 } """) !!. read < Int >(" "" $ [' \\ '] """) ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġread Ġobject Ġkeys Ġthat Ġhave Ġnumbers Ġand / or Ġsymbols ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ"! @ # \$ %^ & * () _- += [] {} |: ;< , >. ?` ~ " Ġ// Ġexcluding Ġ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key 1 ": Ġ" a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ke 2 y ": Ġ" b ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ke 3 % y ": Ġ" c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 3 4 ": Ġ" d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 $ 3 4 ": Ġ" e ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" abc {} 3 d ": Ġ" f ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ key ": Ġ" g " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. key 1 ") ĠshouldBe Ġ" a " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' key 1 '] ") ĠshouldBe Ġ" a " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. ke 2 y ") ĠshouldBe Ġ" b " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' ke 2 y '] ") ĠshouldBe Ġ" b " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. ke 3 % y ") ĠshouldBe Ġ" c " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' ke 3 % y '] ") ĠshouldBe Ġ" c " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. 1 2 3 4 ") ĠshouldBe Ġ" d " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' 1 2 3 4 '] ") ĠshouldBe Ġ" d " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. 1 2 $ 3 4 ") ĠshouldBe Ġ" e " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' 1 2 $ 3 4 '] ") ĠshouldBe Ġ" e " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $. abc {} 3 d ") ĠshouldBe Ġ" f " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' abc {} 3 d '] ") ĠshouldBe Ġ" f " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < String >(" $ [' $ key '] ") ĠshouldBe Ġ" g " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġon Ġunsupported Ġselectors Ġon Ġobjects ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON ) !!. read < Int >(" $ [: ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġread Ġkey Ġfrom Ġlist Ġif Ġlist Ġitem Ġis Ġan Ġobject ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" ey "}, Ġ{" key ": Ġ" bee "}, Ġ{" key ": Ġ" see "}] """) !!. read < JsonNode >(" $. key ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" ey "}, Ġ{" key ": Ġ" bee "}, Ġ{" key ": Ġ" see "}] """) !!. read < JsonNode >(" $ .* . key "). toString () ĠshouldBe Ġ""" [" ey "," bee "," see "] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" ey "}, Ġ{" key ": Ġ" bee "}, Ġ{" key ": Ġ" see "}] """) !!. read < JsonNode >(" $[ 0 , 2 ]. key "). toString () ĠshouldBe Ġ""" [" ey "," see "] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" one ": Ġ{" key ": Ġ" value "}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" two ": Ġ{" k ": Ġ" v "}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" three ": Ġ{" some ": Ġ" more ", Ġ" key ": Ġ" other Ġvalue "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ") !!. read < JsonNode >(" $ [' one ',' three ']. key "). toString () ĠshouldBe Ġ""" [" value "," other Ġvalue "] """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" a ": Ġ 1 },{" a ": Ġ 1 }] """) !!. read < JsonNode >(" $ [* ]. a "). toString () ĠshouldBe Ġ""" [ 1 , 1 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" a ": Ġ 1 },{" a ": Ġ 1 }] """) !!. read < JsonNode >(" $ .* . a "). toString () ĠshouldBe Ġ""" [ 1 , 1 ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" Multi Ġobject Ġaccessors ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġget Ġlist Ġof Ġscal ars ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": Ġ" value ", Ġ" another ": Ġ" entry "} """) !!. read < List < String >> ("$ [' key ',' another '] ") ĠshouldBe ĠlistOf (" value ", Ġ" entry ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġempty Ġlist Ġof Ġreading Ġfrom Ġa Ġlist Ġthat 's Ġnot Ġroot Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" value ", Ġ" another ": Ġ" entry "}] """) !!. read < Any >(" $ [' key ',' another ']"). toString () ĠshouldBe Ġ" []" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" ey ", Ġ" other ": Ġ 1 }, Ġ{" key ": Ġ" bee "}, Ġ{" key ": Ġ" see ", Ġ" else ": Ġ 3 }] """) !!. read < JsonNode >(" $ [' key ',' other ']"). toString () ĠshouldBe Ġ" []" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġread Ġobj Ġkeys Ġfrom Ġroot Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" value ", Ġ" another ": Ġ" entry "}] """) !!. read < List < String >> ("$ .* [' key ',' another '] ") ĠshouldBe ĠlistOf (" value ", Ġ" entry ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" key ": Ġ" ey ", Ġ" other ": Ġ 1 }, Ġ{" key ": Ġ" bee "}, Ġ{" key ": Ġ" see ", Ġ" else ": Ġ 3 }] """) !!. read < JsonNode >(" $ .* [' key ',' other ']"). toString () ĠshouldBe Ġ""" [" ey ", 1 ," bee "," see "] """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġget Ġall Ġ 3 Ġkeys ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < Any >> ("$ [ 0 ][' latitude ',' longitude ',' isActive '] ") ĠshouldBe ĠlistOf (- 8 5 . 8 8 8 6 5 1 , Ġ 3 8 . 2 8 7 1 5 2 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġget Ġonly Ġthe Ġkey / value Ġpairs Ġwhen Ġfound ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < Double >> ("$ [ 0 ][' latitude ',' longitude ', Ġ' unknown key '] ") ĠshouldBe ĠlistOf ( Ġ- 8 5 . 8 8 8 6 5 1 , Ġ 3 8 . 2 8 7 1 5 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Array Ġaccessors ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġnull Ġof Ġindex Ġout Ġof Ġbounds ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Any >(" $[ 4 3 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Any >(" $ [- 4 3 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġvalue Ġif Ġvalue Ġexists Ġat Ġindex ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Int >(" $[ 2 ]") ĠshouldBe Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Int >(" $[ 0 ]") ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġvalue Ġfrom Ġends ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Int >(" $ [- 2 ]") ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Int >(" $ [- 4 ]") ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < String >(" $[ 0 ][' tags '] [- 1 ]") ĠshouldBe Ġ" qui " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < String >(" $[ 0 ][' tags '] [- 3 ]") ĠshouldBe Ġ" c illum " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit ("- 0 Ġshould Ġget Ġfirst Ġitem Ġin Ġarray ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( SMALL _ JSON _ ARRAY ) !!. read < Int >(" $ [- 0 ]") ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġnull Ġif Ġused Ġon ĠJSON Ġobject ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": 3 } """) !!. read < Any >(" $[ 3 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġnull Ġif Ġused Ġon Ġa Ġscalar Ġother Ġthan ĠString ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 5 ") !!. read < Any >(" $[ 0 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 5 . 3 4 ") !!. read < Any >(" $[ 0 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" true ") !!. read < Any >(" $[ 0 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" false ") !!. read < Any >(" $[ 0 ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġcharacter Ġat Ġindex Ġif ĠString Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" """ hello """ ") !!. read < String >(" $[ 0 ]") ĠshouldBe Ġ" h " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" Multi Ġarray Ġaccessors ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġget Ġfirst , Ġfourth , Ġand Ġsix th Ġitems ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '][ 0 , 3 , 5 ]") ĠshouldBe ĠlistOf (" oc ca ec at "," lab ore "," labor is ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġget Ġonly Ġthe Ġitems Ġwith Ġvalid Ġindex ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '][ 0 , 3 0 , 5 0 ]") ĠshouldBe ĠlistOf (" oc ca ec at ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġempty Ġlist Ġif Ġused Ġon ĠJSON Ġobject ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": 3 } """) !!. read < Any >(" $[ 3 , 4 ]") ?. toString () ĠshouldBe Ġ" []" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" Array Ġranges ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhandle Ġarray Ġrange Ġfrom Ġstart ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '] [: 3 ]") ĠshouldBe ĠlistOf (" oc ca ec at "," mol lit "," ull am co ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '] [:- 4 ]") ĠshouldBe ĠlistOf (" oc ca ec at "," mol lit "," ull am co ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhandle Ġarray Ġrange Ġto Ġend ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '][ 5 :] ") ĠshouldBe ĠlistOf (" labor is "," qui ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '] [- 2 :] ") ĠshouldBe ĠlistOf (" labor is "," qui ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhandle Ġspecified Ġrange , Ġexclusive Ġat Ġend ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '][ 3 : 5 ]") ĠshouldBe ĠlistOf (" lab ore "," c illum ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '][ 3 :- 1 ]") ĠshouldBe ĠlistOf (" lab ore "," c illum "," labor is ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '] [- 6 : 4 ]") ĠshouldBe ĠlistOf (" mol lit "," ull am co "," lab ore ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '] [- 3 :- 1 ]") ĠshouldBe ĠlistOf (" c illum "," labor is ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġrange Ġitems Ġup Ġto Ġend Ġif Ġend Ġindex Ġout Ġof Ġbounds ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ][' tags '][ 5 : 3 0 ]") ĠshouldBe ĠlistOf (" labor is "," qui ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġrange Ġitems Ġup Ġfrom Ġstart Ġif Ġstart Ġindex Ġout Ġof Ġbounds ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [" first ", Ġ" second ", Ġ" third "] """) !!. read < List < String >> ("$ [- 4 :] ") ĠshouldBe ĠlistOf (" first ", Ġ" second ", Ġ" third ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġempty Ġlist Ġif Ġused Ġon ĠJSON Ġobject ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": 3 } """) !!. read < Any >(" $[ 1 : 3 ]") ?. toString () ĠshouldBe Ġ" []" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġget Ġall Ġitems Ġin Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [" first ", Ġ" second "] """) !!. read < List < String >> ("$ [: ]") ĠshouldBe ĠlistOf (" first ", Ġ" second ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [" first ", Ġ" second "] """) !!. read < List < String >> ("$ [ 0 :] ") ĠshouldBe ĠlistOf (" first ", Ġ" second ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [" first ", Ġ" second "] """) !!. read < List < String >> ("$ ") ĠshouldBe ĠlistOf (" first ", Ġ" second ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġ" Th omas ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" age " Ġto Ġ 1 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġ" M ila ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" age " Ġto Ġ 1 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġ" Kon st ant in ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" age " Ġto Ġ 2 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nickname " Ġto Ġ" K ons " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġ" Tr acy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" age " Ġto Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( FAMILY _ JSON ) !!. read < List < Map < String , ĠAny >> >(" $. family . children [: ]") ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( FAMILY _ JSON ) !!. read < List < Map < String , ĠAny >> >(" $. family . children [ 0 :] ") ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" [:] Ġcom bos ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" [{" c ":" cc 1 "," d ":" dd 1 "," e ":" ee 1 "},{" c ":" cc 2 "," d ":" dd 2 "," e ":" ee 2 "}] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < JsonNode >(" $ [:] "). toString () ĠshouldBe Ġ""" [{" c ":" cc 1 "," d ":" dd 1 "," e ":" ee 1 "},{" c ":" cc 2 "," d ":" dd 2 "," e ":" ee 2 "}] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < JsonNode >(" $ [: ][' c ']"). toString () ĠshouldBe Ġ""" [" cc 1 "," cc 2 "] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < JsonNode >(" $ [: ][' c ',' d ']"). toString () ĠshouldBe Ġ""" [" cc 1 "," dd 1 "," cc 2 "," dd 2 "] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < JsonNode >(" $ .. [:] "). toString () ĠshouldBe Ġ""" [{" c ":" cc 1 "," d ":" dd 1 "," e ":" ee 1 "},{" c ":" cc 2 "," d ":" dd 2 "," e ":" ee 2 "}] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < JsonNode >(" $ .* [:] "). toString () ĠshouldBe Ġ""" [] """ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson 2 Ġ= Ġ"[ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ]] " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json 2 ) !!. read < JsonNode >(" $ [:] "). toString () ĠshouldBe Ġ""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ]] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json 2 ) !!. read < JsonNode >(" $ [: ][ 0 ]"). toString () ĠshouldBe Ġ""" [ 2 , 3 , 5 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json 2 ) !!. read < JsonNode >(" $ [: ][ 1 ]"). toString () ĠshouldBe Ġ""" [ 4 , 6 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json 2 ) !!. read < JsonNode >(" $ .* [:] "). toString () ĠshouldBe Ġ""" [ 2 , 3 , 4 , 5 , 6 , 7 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json 2 ) !!. read < JsonNode >(" $ .. [:] "). toString () ĠshouldBe Ġ""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ], 2 , 3 , 4 , 5 , 6 , 7 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json 2 ) !!. read < JsonNode >(" $ .. [: ]. * "). toString () ĠshouldBe Ġ""" [ 2 , 3 , 4 , 5 , 6 , 7 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" List Ġcollections ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġinclude Ġnull s ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" key ": Ġ[ 1 , Ġ" random ", Ġnull , Ġ 1 . 7 6 5 ]} """) !!. read < List < Any ? >> (" $. key ") ĠshouldBe ĠlistOf ( 1 , Ġ" random ", Ġnull , Ġ 1 . 7 6 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe ĠString Ġcollection ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 0 ]. tags ") ĠshouldBe ĠlistOf (" oc ca ec at "," mol lit "," ull am co "," lab ore "," c illum "," labor is "," qui ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe ĠInt Ġcollection ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < Int >> ("$ [ 5 ]. nums ") ĠshouldBe ĠlistOf ( 1 , 2 , 3 , 4 , 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe ĠLong Ġcollection ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < Long >> ("$ [ 5 ]. nums ") ĠshouldBe ĠlistOf ( 1 L , 2 L , 3 L , 4 L , 5 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġa ĠSet Ġcollection Ġto Ġremove Ġduplicates ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 , 2 , 3 , 1 , 2 , 4 , 5 ] """) !!. read < Set < Int >> ("$ ") ĠshouldBe Ġset Of ( 1 , 2 , 3 , 4 , 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Map Ġobjects ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġbe ĠMap ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" a ": Ġ{" b ": Ġ" yo "}} } """) !!. read < Map < String , ĠAny >> ("$ ") ĠshouldBe Ġmap Of (" a " Ġto Ġmap Of (" b " Ġto Ġ" yo ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" {" a ": Ġ{" b ": Ġ" yo "}} } """) !!. read < Map < String , ĠString >> (" $. a ") ĠshouldBe Ġmap Of (" b " Ġto Ġ" yo ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Deep Ġscans ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġget ĠString Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf (" Sal azar ĠCase y "," K ath r ine ĠO sb orn "," V on da ĠHow e "," Har re ll ĠPr att "," Port er ĠC um m ings ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" M ason ĠLe ach "," S pen cer ĠVal enz ue la "," Hope ĠMed ina "," Mar ie ĠH amp ton "," Fe lec ia ĠB right ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" M ary an ne ĠW ig gin s "," M ary lo u ĠCal dw ell "," M ari ĠP ugh "," R ios ĠN ort on "," J udy ĠGood "," Ro set ta ĠStan ley ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" M arg ret ĠQu inn "," L ora ĠC ot ton "," Gain es ĠHen ry "," D or ot he a ĠIr win ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ .. name ") ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ .. name ") ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget ĠDouble Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < Double >> ("$ .. latitude ") ĠshouldBe ĠlistOf (- 8 5 . 8 8 8 6 5 1 , Ġ 7 1 . 8 3 1 7 9 8 , Ġ 7 8 . 2 6 6 1 5 7 , Ġ- 1 0 . 2 1 4 3 9 1 , Ġ 3 2 . 2 9 3 3 6 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < Double >> ("$ .. [' latitude '] ") ĠshouldBe ĠlistOf (- 8 5 . 8 8 8 6 5 1 , Ġ 7 1 . 8 3 1 7 9 8 , Ġ 7 8 . 2 6 6 1 5 7 , Ġ- 1 0 . 2 1 4 3 9 1 , Ġ 3 2 . 2 9 3 3 6 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget ĠArray Node ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" [ [" oc ca ec at "," mol lit "," ull am co "," lab ore "," c illum "," labor is "," qui "], [" ali quip "," c illum "," qui "," ut "," ea "," eu "," re pre henderit "], [" null a "," elit "," ip sum "," par iatur "," ull am co "," ut "," sint "], [" f ugiat "," sit "," ad "," vol upt ate "," off icia "," a ute "," du is "], [" est "," dol or "," do lo re "," ex erc itation "," minim "," dol or "," par iatur "]] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. tags ") ?. toString () ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. [' tags '] ") ?. toString () ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġfrom Ġlonger Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 2 ] .. name ") ĠshouldBe ĠlistOf (" Mar ie ĠH amp ton ", Ġ" Fe lec ia ĠB right ", Ġ" M ary an ne ĠW ig gin s ", Ġ" M ary lo u ĠCal dw ell ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ [ 2 ] .. [' name '] ") ĠshouldBe ĠlistOf (" Mar ie ĠH amp ton ", Ġ" Fe lec ia ĠB right ", Ġ" M ary an ne ĠW ig gin s ", Ġ" M ary lo u ĠCal dw ell ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġthe Ġfirst Ġitem Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 0 ]"). toString () ĠshouldBe Ġ""" [" null a ", {" id ": 0 ," name ":" Fe lec ia ĠB right "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġthe Ġlast Ġitem Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [- 1 ]"). toString () ĠshouldBe Ġ""" [" sint ", {" id ": 2 ," name ":" M ary lo u ĠCal dw ell "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġthe Ġfirst Ġand Ġthird Ġitems Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 0 , 2 ]"). toString () ĠshouldBe Ġ""" [" null a "," ip sum ", {" id ": 0 ," name ":" Fe lec ia ĠB right "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" id ": 2 ," name ":" M ary lo u ĠCal dw ell "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġthe Ġfirst Ġand Ġsecond Ġfrom Ġlast Ġitems Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 0 , Ġ- 2 ]"). toString () ĠshouldBe Ġ""" [" null a "," ut ", {" id ": 0 ," name ":" Fe lec ia ĠB right "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġthe Ġfirst Ġand Ġsecond Ġ( range ) Ġitems Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 0 : 2 ]"). toString () ĠshouldBe Ġ""" [" null a "," elit ", {" id ": 0 ," name ":" Fe lec ia ĠB right "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġthe Ġthird Ġand Ġall Ġfollowing Ġitems Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 2 :] "). toString () ĠshouldBe Ġ""" [" ip sum "," par iatur "," ull am co "," ut "," sint ", {" id ": 2 ," name ":" M ary lo u ĠCal dw ell "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġall Ġitems Ġexcept Ġfor Ġlast Ġitem Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [:- 1 ]"). toString () ĠshouldBe Ġ""" [" null a "," elit "," ip sum "," par iatur "," ull am co "," ut ", {" id ": 0 ," name ":" Fe lec ia ĠB right "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġall Ġitems Ġstarting Ġfrom Ġsecond Ġto Ġlast Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [- 2 :] "). toString () ĠshouldBe Ġ""" [" ut "," sint ", {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" id ": 2 ," name ":" M ary lo u ĠCal dw ell "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġall Ġitems Ġbetween Ġfirst Ġand Ġlast Ġof Ġall Ġsub lists Ġ( both Ġsides Ġexclusive )") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 1 :- 1 ]"). toString () ĠshouldBe Ġ""" [" elit "," ip sum "," par iatur "," ull am co "," ut ", {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġall Ġitems Ġfrom Ġsecond Ġto Ġlast , Ġto Ġ 4 th Ġitem Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [- 2 : 5 ]"). toString () ĠshouldBe Ġ""" [{" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" id ": 2 ," name ":" M ary lo u ĠCal dw ell "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġsecond Ġfrom Ġlast Ġitem Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [- 2 :- 1 ]"). toString () ĠshouldBe Ġ""" [" ut ", {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġkeys Ġon Ġsame Ġlevel Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [' name ',' id ']"). toString () ĠshouldBe Ġ""" [" Mar ie ĠH amp ton "," Fe lec ia ĠB right ", 0 ," M ary an ne ĠW ig gin s "," M ary lo u ĠCal dw ell ", 2 ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġkeys Ġon Ġdifferent Ġlevel Ġof Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [' name ',' company ',' id ']"). toString () ĠshouldBe Ġ""" [" Mar ie ĠH amp ton "," Z EN CO "," Fe lec ia ĠB right ", 0 ," M ary an ne ĠW ig gin s "," M ary lo u ĠCal dw ell ", 2 ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġscan Ġto Ġget Ġall Ġitems Ġafter Ġthe Ġfirst Ġof Ġall Ġsub lists Ġeven Ġif Ġend Ġout Ġof Ġrange ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $[ 2 ] .. [ 1 : 1 0 0 ]"). toString () ĠshouldBe Ġ""" [" elit "," ip sum "," par iatur "," ull am co "," ut "," sint ", {" name ":" M ary an ne ĠW ig gin s "," other ":{" a ":{" b ":{" c ":" yo "}} }}, {" id ": 2 ," name ":" M ary lo u ĠCal dw ell "," other ":{" a ":{" b ":{" c ":" yo "}} }} ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġthe Ġkey Ġof Ġevery Ġ 2 nd Ġitem Ġin Ġall Ġsub lists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" k ": Ġ[{" key ": Ġ" some Ġvalue "}, Ġ{" key ": Ġ 4 2 }], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kk ": Ġ[[ {" key ": Ġ 1 0 0 }, Ġ{" key ": Ġ 2 0 0 }, Ġ{" key ": Ġ 3 0 0 }], Ġ[{" key ": Ġ 4 0 0 }, Ġ{" key ": Ġ 5 0 0 }, Ġ{" key ": Ġ 6 0 0 } ]], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key ": Ġ[ 0 , Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( json ) !!. read < JsonNode >(" $ .. [ 1 ]. key "). toString () ĠshouldBe Ġ""" [ 4 2 , 2 0 0 , 5 0 0 ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Wildcard ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġhandle Ġall Ġtypes Ġof Ġreads Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġhave Ġobj , Ġlist , Ġlist , Ġand Ġscal ars . ĠIt Ġshould Ġhandle Ġthem Ġall Ġcorrectly Ġthe Ġfurther Ġwe Ġgo Ġdown Ġwith Ġwild cards ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkeep Ġin Ġmind Ġwild cards Ġalways Ġreturn Ġa Ġlist , Ġand Ġdrop Ġscal ars Ġwhen Ġgoing Ġup Ġa Ġlist . ĠScal ars Ġdont Ġhave Ġlevels Ġto Ġgo Ġup , Ġonly Ġcontainer Ġnodes Ġdo ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ""" [{" bar ":[ 4 2 ]} ] """ Ġ// Ġin Ġroot Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ .* .* "). toString () ĠshouldBe Ġ""" [[ 4 2 ]] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitem Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ .* .* .* "). toString () ĠshouldBe Ġ""" [ 4 2 ] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitem Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ .* .* .* .* "). toString () ĠshouldBe Ġ" []" Ġ// Ġroot Ġlist Ġsince Ġwildcard Ġalways Ġreturns Ġa Ġlist ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 ]} ] """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ""" [{" bar ":[ 4 2 ]}, {" bae ":[ 3 0 ]} ] """ Ġ// Ġin Ġroot Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 ]} ] """) !!. read < JsonNode >(" $ .* .* "). toString () ĠshouldBe Ġ""" [[ 4 2 ],[ 3 0 ]] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitems Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 ]} ] """) !!. read < JsonNode >(" $ .* .* .* "). toString () ĠshouldBe Ġ""" [ 4 2 , 3 0 ] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitems Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 ]} ] """) !!. read < JsonNode >(" $ .* .* .* .* "). toString () ĠshouldBe Ġ" []" Ġ// Ġroot Ġlist Ġsince Ġwildcard Ġalways Ġreturns Ġa Ġlist ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 , 3 1 ]} ] """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ""" [{" bar ":[ 4 2 ]}, {" bae ":[ 3 0 , 3 1 ]} ] """ Ġ// Ġin Ġroot Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 , 3 1 ]} ] """) !!. read < JsonNode >(" $ .* .* "). toString () ĠshouldBe Ġ""" [[ 4 2 ],[ 3 0 , 3 1 ]] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitems Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 , 3 1 ]} ] """) !!. read < JsonNode >(" $ .* .* .* "). toString () ĠshouldBe Ġ""" [ 4 2 , 3 0 , 3 1 ] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitems Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]}, {" bae ": Ġ[ 3 0 , 3 1 ]} ] """) !!. read < JsonNode >(" $ .* .* .* .* "). toString () ĠshouldBe Ġ" []" Ġ// Ġroot Ġlist Ġsince Ġwildcard Ġalways Ġreturns Ġa Ġlist ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ], Ġ" scalar key ": Ġ" scalar 2 "}, Ġ" scalar 1 "] """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ""" [{" bar ":[ 4 2 ]," scalar key ":" scalar 2 "}," scalar 1 "] """ Ġ// Ġin Ġroot Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ], Ġ" scalar key ": Ġ" scalar 2 "}, Ġ" scalar 1 "] """) !!. read < JsonNode >(" $ .* .* "). toString () ĠshouldBe Ġ""" [[ 4 2 ]," scalar 2 "] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitems Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ], Ġ" scalar key ": Ġ" scalar 2 "}, Ġ" scalar 1 "] """) !!. read < JsonNode >(" $ .* .* .* "). toString () ĠshouldBe Ġ""" [ 4 2 ] """ Ġ// Ġroot Ġlist Ġwrapped Ġaround Ġitem Ġfrom Ġnext Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ], Ġ" scalar key ": Ġ" scalar 2 "}, Ġ" scalar 1 "] """) !!. read < JsonNode >(" $ .* .* .* .* "). toString () ĠshouldBe Ġ" []" Ġ// Ġroot Ġlist Ġsince Ġwildcard Ġalways Ġreturns Ġa Ġlist ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [[ 1 ], Ġ[ 2 , 3 ]] """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ""" [[ 1 ],[ 2 , 3 ]] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [[ 1 ], Ġ[ 2 , 3 ]] """) !!. read < JsonNode >(" $ .* .* "). toString () ĠshouldBe Ġ""" [ 1 , 2 , 3 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [[ 1 ], Ġ[ 2 , 3 ]] """) !!. read < JsonNode >(" $ .* .* .* "). toString () ĠshouldBe Ġ""" [] """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .* "). toString () ĠshouldBe Ġ""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .* .* "). toString () ĠshouldBe Ġ""" [ 2 , 3 , 4 , 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .* .* .* "). toString () ĠshouldBe Ġ""" [ 8 , 9 , 1 0 , 1 1 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .* .* .* .* "). toString () ĠshouldBe Ġ""" [] """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .. * "). toString () ĠshouldBe Ġ""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]], 2 , 3 , 4 , 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ], 8 , 9 , 1 0 , 1 1 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .. [* ]"). toString () ĠshouldBe Ġ""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]], 2 , 3 , 4 , 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ], 8 , 9 , 1 0 , 1 1 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .. * .* "). toString () ĠshouldBe Ġ""" [ 2 , 3 , 4 , 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ], 8 , 9 , 1 0 , 1 1 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [ 1 ,[ 2 ],[ 3 , 4 ],[ 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ]]] """) !!. read < JsonNode >(" $ .. * .. * "). toString () ĠshouldBe Ġ""" [ 2 , 3 , 4 , 5 , 6 , 7 ,[ 8 , 9 , 1 0 , 1 1 ], 8 , 9 , 1 0 , 1 1 , 8 , 9 , 1 0 , 1 1 ] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġhandle Ġlists Ġproperly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturns Ġlist Ġheld Ġby Ġ" bar ", Ġwrapped Ġin Ġthe Ġroot Ġlevel Ġlist Ġsince Ġwildcard Ġalways Ġreturns Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ [* ]. bar "). toString () ĠshouldBe Ġ""" [[ 4 2 ]] """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturns Ġroot Ġlevel Ġlist Ġnow Ġwith Ġthe Ġitem Ġfrom Ġthe Ġinner Ġlist . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ .* . bar .* "). toString () ĠshouldBe Ġ""" [ 4 2 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ [* ]. bar [* ]"). toString () ĠshouldBe Ġ""" [ 4 2 ] """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġwould Ġbe Ġa Ġwildcard Ġon Ġa Ġroot Ġlevel Ġlist Ġwhich Ġremoves Ġthe Ġscal ars Ġon Ġthat Ġlevel . ĠIt Ġshould Ġbe Ġlist , Ġnot Ġnull Ġas Ġwildcard Ġalways Ġreturns Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [{" bar ": Ġ[ 4 2 ]} ] """) !!. read < JsonNode >(" $ [* ]. bar [* ][ * ]"). toString () ĠshouldBe Ġ""" [] """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [[ 1 ], Ġ[ 2 , 3 ]] """) !!. read < JsonNode >(" $ .* [ 0 ]"). toString () ĠshouldBe Ġ""" [ 1 , 2 ] """ Ġ// Ġfirst Ġitem Ġof Ġeach Ġsub list Ġin Ġroot ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [[ 1 ], Ġ[ 2 , 3 ]] """) !!. read < JsonNode >(" $ .* [ 1 ]"). toString () ĠshouldBe Ġ""" [ 3 ] """ Ġ// Ġsecond Ġitem Ġof Ġeach Ġsub list Ġin Ġroot , Ġwhich Ġthere Ġis Ġonly Ġ 1 Ġof ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (""" [[ 1 ], Ġ[ 2 , 3 ]] """) !!. read < JsonNode >(" $ .* [ 1 ]. * "). toString () ĠshouldBe Ġ""" [] """ Ġ// Ġsecond Ġitem Ġof Ġeach Ġsub list Ġin Ġroot , Ġwhich Ġthere Ġis Ġonly Ġ 1 Ġof ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( Json Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. friends "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( Json Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. friends .. name "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( Json Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. friends .. name [ 1 ]"). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. friends .* . name "). toString () ĠshouldBe Ġ""" [" K ath r ine ĠO sb orn "," V on da ĠHow e "," Har re ll ĠPr att "," M ason ĠLe ach "," S pen cer ĠVal enz ue la "," Hope ĠMed ina "," Fe lec ia ĠB right "," M ary an ne ĠW ig gin s "," M ary lo u ĠCal dw ell "," R ios ĠN ort on "," J udy ĠGood "," Ro set ta ĠStan ley "," L ora ĠC ot ton "," Gain es ĠHen ry "," D or ot he a ĠIr win "] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < List < String >> ("$ .. friends .[ * ]. name ") ĠshouldBe ĠlistOf (" K ath r ine ĠO sb orn "," V on da ĠHow e "," Har re ll ĠPr att "," M ason ĠLe ach "," S pen cer ĠVal enz ue la "," Hope ĠMed ina "," Fe lec ia ĠB right "," M ary an ne ĠW ig gin s "," M ary lo u ĠCal dw ell "," R ios ĠN ort on "," J udy ĠGood "," Ro set ta ĠStan ley "," L ora ĠC ot ton "," Gain es ĠHen ry "," D or ot he a ĠIr win ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġnull Ġif Ġnull Ġread Ġbefore Ġwildcard ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("{} ") !!. read < Any >(" $. key .* ") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ("{} ") !!. read < Any >(" $. key [* ]") ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġself Ġif Ġused Ġon Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 5 ") !!. read < Int >(" $ .* ") ĠshouldBe Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" 5 . 3 4 ") !!. read < Double >(" $ .* ") ĠshouldBe Ġ 5 . 3 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" true ") !!. read < Boolean >(" $ .* ") ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" false ") !!. read < Boolean >(" $ .* ") ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse (" """ hello """ ") !!. read < String >(" $ .* ") ĠshouldBe Ġ" hello " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġget Ġthe Ġvalues Ġof Ġthe ĠJSON Ġobject ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. friends [- 1 ]. * "). toString () ĠshouldBe Ġ""" [ 2 ," Har re ll ĠPr att ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," Hope ĠMed ina ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," M ary lo u ĠCal dw ell ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," Ro set ta ĠStan ley ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," D or ot he a ĠIr win ", {" a ":{" b ":{" c ":" yo "}} }] """ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Path . parse ( LARGE _ JSON ) !!. read < JsonNode >(" $ .. friends [- 1 ][ * ]"). toString () ĠshouldBe Ġ""" [ 2 ," Har re ll ĠPr att ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," Hope ĠMed ina ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," M ary lo u ĠCal dw ell ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," Ro set ta ĠStan ley ", {" a ":{" b ":{" c ":" yo "}} }, 2 ," D or ot he a ĠIr win ", {" a ":{" b ":{" c ":" yo "}} }] """ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ