Merge pull request #610 from tilds/optJSONObject-defaultValue

New JSONObject.optJSONObject method with defaultValue parameter
This commit is contained in:
Sean Leary 2021-06-28 22:01:37 -05:00 committed by GitHub
commit 449ec8745e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 6 deletions

View File

@ -1370,9 +1370,21 @@ public class JSONObject {
* A key string. * A key string.
* @return A JSONObject which is the value. * @return A JSONObject which is the value.
*/ */
public JSONObject optJSONObject(String key) { public JSONObject optJSONObject(String key) { return this.optJSONObject(key, null); }
/**
* Get an optional JSONObject associated with a key, or the default if there
* is no such key or if the value is not a JSONObject.
*
* @param key
* A key string.
* @param defaultValue
* The default.
* @return An JSONObject which is the value.
*/
public JSONObject optJSONObject(String key, JSONObject defaultValue) {
Object object = this.opt(key); Object object = this.opt(key);
return object instanceof JSONObject ? (JSONObject) object : null; return object instanceof JSONObject ? (JSONObject) object : defaultValue;
} }
/** /**

View File

@ -2404,8 +2404,8 @@ public class JSONObjectTest {
MyEnum.VAL1.equals(jsonObject.optEnum(MyEnum.class, "myKey", MyEnum.VAL1))); MyEnum.VAL1.equals(jsonObject.optEnum(MyEnum.class, "myKey", MyEnum.VAL1)));
assertTrue("optJSONArray() should return null ", assertTrue("optJSONArray() should return null ",
null==jsonObject.optJSONArray("myKey")); null==jsonObject.optJSONArray("myKey"));
assertTrue("optJSONObject() should return null ", assertTrue("optJSONObject() should return default JSONObject ",
null==jsonObject.optJSONObject("myKey")); jsonObject.optJSONObject("myKey", new JSONObject("{\"testKey\":\"testValue\"}")).getString("testKey").equals("testValue"));
assertTrue("optLong() should return default long", assertTrue("optLong() should return default long",
42l == jsonObject.optLong("myKey", 42l)); 42l == jsonObject.optLong("myKey", 42l));
assertTrue("optDouble() should return default double", assertTrue("optDouble() should return default double",
@ -2440,8 +2440,8 @@ public class JSONObjectTest {
MyEnum.VAL1.equals(jsonObject.optEnum(MyEnum.class, "myKey", MyEnum.VAL1))); MyEnum.VAL1.equals(jsonObject.optEnum(MyEnum.class, "myKey", MyEnum.VAL1)));
assertTrue("optJSONArray() should return null ", assertTrue("optJSONArray() should return null ",
null==jsonObject.optJSONArray("myKey")); null==jsonObject.optJSONArray("myKey"));
assertTrue("optJSONObject() should return null ", assertTrue("optJSONObject() should return default JSONObject ",
null==jsonObject.optJSONObject("myKey")); jsonObject.optJSONObject("myKey", new JSONObject("{\"testKey\":\"testValue\"}")).getString("testKey").equals("testValue"));
assertTrue("optLong() should return default long", assertTrue("optLong() should return default long",
42l == jsonObject.optLong("myKey", 42l)); 42l == jsonObject.optLong("myKey", 42l));
assertTrue("optDouble() should return default double", assertTrue("optDouble() should return default double",