1 2 tst |empty array| 3 in |[]| 4 sel |0| 5 out |<NULL>| 6 7 tst |one-element array: integer| 8 in |[1]| 9 sel |0| 10 out |1| 11 sel |1| 12 out |<NULL>| 13 sel |100| 14 out |<NULL>| 15 sel |-1| 16 out |<NULL>| 17 18 tst |one-element array: hex integer (not in spec, not supported)| 19 in |[0x1000]| 20 sel |0| 21 out |<NULL>| 22 23 tst |one-element array: float| 24 in |[1.5001]| 25 sel |0| 26 out |1.5001| 27 28 tst |one-element array: float + exponent| 29 in |[16.3e10]| 30 sel |0| 31 out |16.3e10| 32 33 tst |one-element array: integer + whitespace| 34 in |[ 5 ]| 35 sel |0| 36 out |5| 37 38 tst |one-element array: integer + exponent + whitespace| 39 in |[ 16E10 ]| 40 sel |0| 41 out |16E10| 42 43 tst |one-element array: string| 44 in |["alpha"]| 45 sel |0| 46 out |alpha| 47 48 tst |alternative first-element indexing| 49 in |[1,5,10,15,20]| 50 sel |[0]| 51 out |1| 52 sel |[3]| 53 out |15| 54 sel |[4]| 55 out |20| 56 sel |[5]| 57 out |<NULL>| 58 59 tst |one-element array: object| 60 in |[ { "first": true, "second": false }]| 61 sel |0.first| 62 out |true| 63 sel |0.second| 64 out |false| 65 sel |0.third| 66 out |<NULL>| 67 68 tst |many-element array: integers| 69 in |[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377]| 70 sel |10| 71 out |55| 72 sel |14| 73 out |377| 74 sel |19| 75 out |<NULL>| 76 77 tst |many-element array: multiple types| 78 in |["string",32,true,{"a":9,"b":false},100.3e10,false,200.5,{"key":"val"},null]| 79 sel |0| 80 out |string| 81 sel |0.notobject| 82 out |<NULL>| 83 sel |1| 84 out |32| 85 sel |2| 86 out |true| 87 sel |3| 88 out |{"a":9,"b":false}| 89 sel |3.a| 90 out |9| 91 sel |3.b| 92 out |false| 93 sel |3.c| 94 out |<NULL>| 95 sel |4| 96 out |100.3e10| 97 sel |5| 98 out |false| 99 sel |6| 100 out |200.5| 101 sel |7| 102 out |{"key":"val"}| 103 sel |7.key| 104 out |val| 105 sel |7.key.notobject| 106 out |<NULL>| 107 sel |7.nonexist| 108 out |<NULL>| 109 sel |8| 110 out |null| 111 sel |9| 112 out |<NULL>| 113 114 tst |many-element array: multiple types + whitespace| 115 in | 116 [ "string" , 32 , true , {"a": 9, "b": false}, 100.3e10, false, 200.5,{"key" : 117 "val"}, null ] | 118 sel |0| 119 out |string| 120 sel |0.notobject| 121 out |<NULL>| 122 sel |1| 123 out |32| 124 sel |2| 125 out |true| 126 sel |3| 127 out |{"a": 9, "b": false}| 128 sel |3.a| 129 out |9| 130 sel |3.b| 131 out |false| 132 sel |3.c| 133 out |<NULL>| 134 sel |4| 135 out |100.3e10| 136 sel |5| 137 out |false| 138 sel |6| 139 out |200.5| 140 sel |7| 141 out |{"key" : 142 "val"}| 143 sel |7.key| 144 out |val| 145 sel |7.key.notobject| 146 out |<NULL>| 147 sel |7.nonexist| 148 out |<NULL>| 149 sel |8| 150 out |null| 151 sel |9| 152 out |<NULL>| 153 154 tst |two-element array: various string escape codes| 155 in |["abcd \" \\ \/ \b \f \n \r \t \u0000 \uf00F ", "final"]| 156 sel |0| 157 out |abcd \" \\ \/ \b \f \n \r \t \u0000 \uf00F | 158 sel |1| 159 out |final| 160 161 tst |three-element array: broken escape code| 162 in |["fine here", "dodgey \u00AZ", "wont get here"]| 163 sel |0| 164 out |fine here| 165 sel |1| 166 out |<NULL>| 167 sel |2| 168 out |<NULL>| 169 170 tst |nested objects| 171 in |{ "top": { "mid" : { "legs": "feet" }, "number": 9, "array":[0,1,{"a":true,"bb":[1,2,false,{"x":"yz"}]}]}}| 172 sel |top| 173 out |{ "mid" : { "legs": "feet" }, "number": 9, "array":[0,1,{"a":true,"bb":[1,2,false,{"x":"yz"}]}]}| 174 sel |fargo| 175 out |<NULL>| 176 sel |top.mid| 177 out |{ "legs": "feet" }| 178 sel |top.centre| 179 out |<NULL>| 180 sel |top.mid.legs| 181 out |feet| 182 sel |top.mid.number| 183 out |<NULL>| 184 sel |top.mid.array| 185 out |<NULL>| 186 sel |top.number| 187 out |9| 188 sel |top.array| 189 out |[0,1,{"a":true,"bb":[1,2,false,{"x":"yz"}]}]| 190 sel |top.array[0]| 191 out |0| 192 sel |top.array[1]| 193 out |1| 194 sel |top.array[2]| 195 out |{"a":true,"bb":[1,2,false,{"x":"yz"}]}| 196 sel |top.array[2].a| 197 out |true| 198 sel |top.array[2].b| 199 out |<NULL>| 200 sel |top.array[2].bb| 201 out |[1,2,false,{"x":"yz"}]| 202 sel |top.array[2].bb[0]| 203 out |1| 204 sel |top.array[2].bb[1]| 205 out |2| 206 sel |top.array[2].bb[2]| 207 out |false| 208 sel |top.array[2].bb[3]| 209 out |{"x":"yz"}| 210 sel |top.array[2].bb[3].x| 211 out |yz| 212 sel |top.array[2].bb[3].x.nofurther| 213 out |<NULL>| 214 sel |top.array[2].bb[4]| 215 out |<NULL>| 216 sel |top.array[3]| 217 out |<NULL>| 218