@@ -18,6 +18,54 @@ public AbstractArray array() {
1818 return this ;
1919 }
2020
21+ public AbstractObject object (String key ) {
22+ return query (key ).object ();
23+ }
24+
25+ public AbstractArray array (String key ) {
26+ return query (key ).array ();
27+ }
28+
29+ public AbstractPrimitive primitive (String key ) {
30+ return query (key ).primitive ();
31+ }
32+
33+ public String string (String key ) {
34+ return query (key ).string ();
35+ }
36+
37+ public Boolean bool (String key ) {
38+ return query (key ).bool ();
39+ }
40+
41+ public Number number (String key ) {
42+ return query (key ).number ();
43+ }
44+
45+ public AbstractObject object (String key , AbstractObject orElse ) {
46+ return query (key , orElse ).object ();
47+ }
48+
49+ public AbstractArray array (String key , AbstractArray orElse ) {
50+ return query (key , orElse ).array ();
51+ }
52+
53+ public AbstractPrimitive primitive (String key , AbstractPrimitive orElse ) {
54+ return query (key , orElse ).primitive ();
55+ }
56+
57+ public String string (String key , String orElse ) {
58+ return query (key , new AbstractPrimitive (orElse )).string ();
59+ }
60+
61+ public Boolean bool (String key , Boolean orElse ) {
62+ return query (key , new AbstractPrimitive (orElse )).bool ();
63+ }
64+
65+ public Number number (String key , Number orElse ) {
66+ return query (key , new AbstractPrimitive (orElse )).number ();
67+ }
68+
2169 public AbstractObject object (int index ) {
2270 return get (index ).object ();
2371 }
@@ -42,6 +90,30 @@ public Number number(int index) {
4290 return get (index ).number ();
4391 }
4492
93+ public AbstractObject object (int index , AbstractObject orElse ) {
94+ return get (index , orElse ).object ();
95+ }
96+
97+ public AbstractArray array (int index , AbstractArray orElse ) {
98+ return get (index , orElse ).array ();
99+ }
100+
101+ public AbstractPrimitive primitive (int index , AbstractPrimitive orElse ) {
102+ return get (index , orElse ).primitive ();
103+ }
104+
105+ public String string (int index , String orElse ) {
106+ return get (index , new AbstractPrimitive (orElse )).string ();
107+ }
108+
109+ public Boolean bool (int index , Boolean orElse ) {
110+ return get (index , new AbstractPrimitive (orElse )).bool ();
111+ }
112+
113+ public Number number (int index , Number orElse ) {
114+ return get (index , new AbstractPrimitive (orElse )).number ();
115+ }
116+
45117 public AbstractArray add (AbstractElement element ) {
46118 if (element == null )
47119 element = AbstractNull .INSTANCE ;
@@ -155,6 +227,11 @@ public AbstractElement query(String query) {
155227 }
156228 }
157229
230+ public AbstractElement query (String query , AbstractElement orElse ) {
231+ AbstractElement value = query (query );
232+ return (value != null && !value .isNull ()) ? value : orElse ;
233+ }
234+
158235 public Stream <AbstractElement > stream () {
159236 return elements .stream ();
160237 }
0 commit comments