JsonValue implements Parcelable, JsonSerializable { private static JsonValue wrapJSONObject(@NonNull JSONObject jsonObject) throws JsonException { Map<String, JsonValue> jsonValueMap = new HashMap<>(); Iterator iterator = jsonObject.keys(); while (iterator.hasNext()) { String key = (String) iterator.next(); if (!jsonObject.isNull(key)) { jsonValueMap.put(key, wrap(jsonObject.opt(key))); } } return new JsonValue(new JsonMap(jsonValueMap)); } private  JsonValue(@Nullable Object value); @Nullable Object getValue(); @Nullable String getString(); @NonNull String getString(@NonNull String defaultValue); @NonNull String optString(); int getInt(int defaultValue); float getFloat(float defaultValue); double getDouble(double defaultValue); long getLong(long defaultValue); @Nullable Number getNumber(); boolean getBoolean(boolean defaultValue); @Nullable JsonList getList(); @NonNull JsonList optList(); @Nullable JsonMap getMap(); @NonNull JsonMap optMap(); boolean isNull(); boolean isString(); boolean isInteger(); boolean isDouble(); boolean isFloat(); boolean isLong(); boolean isNumber(); boolean isBoolean(); boolean isJsonMap(); boolean isJsonList(); @NonNull static JsonValue parseString(@Nullable String jsonString); @Override boolean equals(@Nullable Object object); @Override int hashCode(); @NonNull @Override String toString(); @NonNull static JsonValue wrap(@Nullable String value); @NonNull static JsonValue wrap(char value); @NonNull static JsonValue wrap(int value); @NonNull static JsonValue wrap(long value); @NonNull static JsonValue wrap(boolean value); @NonNull static JsonValue wrap(double value); @NonNull static JsonValue wrap(@Nullable JsonSerializable value); @NonNull static JsonValue wrapOpt(@Nullable Object object); @NonNull static JsonValue wrap(@Nullable Object object, @NonNull JsonValue defaultValue); @NonNull static JsonValue wrap(@Nullable Object object); @Override int describeContents(); @Override void writeToParcel(@NonNull Parcel dest, int flags); @NonNull @Override JsonValue toJsonValue(); @NonNull
    final static JsonValue NULL; @NonNull
    static final Parcelable.Creator<JsonValue> CREATOR; }
@Test public void testWrapJSONObject() throws JsonException, JSONException { JSONObject jsonObject = new JSONObject(primitiveMap); jsonObject.put("map", new JSONObject(primitiveMap)); jsonObject.put("collection", new JSONArray(primitiveList)); JsonValue jsonValue = JsonValue.wrap(jsonObject); assertTrue(jsonValue.getValue() instanceof JsonMap); JsonMap jsonMap = jsonValue.getMap(); for (Map.Entry<String, JsonValue> entry : jsonMap.entrySet()) { JsonValue value = JsonValue.wrap(jsonObject.get(entry.getKey())); assertEquals(value, entry.getValue()); } assertEquals(jsonObject.length(), jsonMap.size()); }