66import java .lang .reflect .Field ;
77import java .util .HashMap ;
88import java .util .Map ;
9+ import java .util .Optional ;
910import java .util .Set ;
1011import java .util .function .BiConsumer ;
1112
@@ -65,6 +66,11 @@ public AbstractElement get(String key){
6566 return entries .get (key );
6667 }
6768
69+ public AbstractElement get (String key , AbstractElement orElse ) {
70+ AbstractElement value = get (key );
71+ return (has (key ) && !value .isNull ()) ? value : orElse ;
72+ }
73+
6874 public boolean has (String key ){
6975 return entries .containsKey (key );
7076 }
@@ -87,26 +93,50 @@ public AbstractObject object(String key) {
8793 return get (key ).object ();
8894 }
8995
96+ public AbstractObject object (String key , AbstractObject orElse ) {
97+ return get (key , orElse ).object ();
98+ }
99+
90100 public AbstractArray array (String key ) {
91101 return get (key ).array ();
92102 }
93103
104+ public AbstractArray array (String key , AbstractArray orElse ) {
105+ return get (key , orElse ).array ();
106+ }
107+
94108 public AbstractPrimitive primitive (String key ) {
95109 return get (key ).primitive ();
96110 }
97111
112+ public AbstractPrimitive primitive (String key , AbstractPrimitive orElse ) {
113+ return get (key , orElse ).primitive ();
114+ }
115+
98116 public String string (String key ) {
99117 return get (key ).string ();
100118 }
101119
120+ public String string (String key , String orElse ) {
121+ return get (key , new AbstractPrimitive (orElse )).string ();
122+ }
123+
102124 public Boolean bool (String key ) {
103125 return get (key ).bool ();
104126 }
105127
128+ public Boolean bool (String key , Boolean orElse ) {
129+ return get (key , new AbstractPrimitive (orElse )).bool ();
130+ }
131+
106132 public Number number (String key ) {
107133 return get (key ).number ();
108134 }
109135
136+ public Number number (String key , Number orElse ) {
137+ return get (key , new AbstractPrimitive (orElse )).number ();
138+ }
139+
110140 public JsonElement toJson () {
111141 JsonObject object = new JsonObject ();
112142 entries .forEach ((k ,v ) -> object .add (k , v .toJson ()));
0 commit comments