@@ -202,4 +202,39 @@ void nullValuesInMap() {
202
202
203
203
assertThat (jsonObject .elements ().keySet ()).containsExactly ("a" , "b" , "c" , "d" );
204
204
}
205
+
206
+ @ Test
207
+ void extractNumbers () {
208
+ String s = "{\" aInt\" :7,\" aDouble\" :23.5,\" text\" :\" foo\" ,\" bool\" :true,\" aNull\" :null}" ;
209
+ JsonNodeMapper mapper = JsonNodeMapper .builder ().build ();
210
+ JsonObject jsonObject = mapper .fromJsonObject (s );
211
+
212
+ // Number becomes a Long if it can or otherwise a Double
213
+ assertThat (jsonObject .extract ("aInt" , BigDecimal .TEN )).isEqualTo (7L );
214
+ assertThat (jsonObject .extract ("aDouble" , BigDecimal .TEN )).isEqualTo (23.5D );
215
+
216
+ assertThat (jsonObject .extract ("aInt" , 0 )).isEqualTo (7 );
217
+ assertThat (jsonObject .extract ("aInt" , 0L )).isEqualTo (7L );
218
+ assertThat (jsonObject .extract ("aInt" , 0D )).isEqualTo (7D );
219
+
220
+ assertThat (jsonObject .extract ("aDouble" , 0 )).isEqualTo (23 );
221
+ assertThat (jsonObject .extract ("aDouble" , 0L )).isEqualTo (23L );
222
+ assertThat (jsonObject .extract ("aDouble" , 0D )).isEqualTo (23.5D );
223
+
224
+ assertThat (jsonObject .extract ("doesNotExist" , 3 )).isEqualTo (3 );
225
+ assertThat (jsonObject .extract ("doesNotExist" , 3L )).isEqualTo (3L );
226
+ assertThat (jsonObject .extract ("doesNotExist" , 3.5D )).isEqualTo (3.5D );
227
+
228
+ assertThat (jsonObject .extract ("text" , 3 )).isEqualTo (3 );
229
+ assertThat (jsonObject .extract ("text" , 3L )).isEqualTo (3L );
230
+ assertThat (jsonObject .extract ("text" , 3.5D )).isEqualTo (3.5D );
231
+
232
+ assertThat (jsonObject .extract ("bool" , 3 )).isEqualTo (3 );
233
+ assertThat (jsonObject .extract ("bool" , 3L )).isEqualTo (3L );
234
+ assertThat (jsonObject .extract ("bool" , 3.5D )).isEqualTo (3.5D );
235
+
236
+ assertThat (jsonObject .extract ("aNull" , 3 )).isEqualTo (3 );
237
+ assertThat (jsonObject .extract ("aNull" , 3L )).isEqualTo (3L );
238
+ assertThat (jsonObject .extract ("aNull" , 3.5D )).isEqualTo (3.5D );
239
+ }
205
240
}
0 commit comments