@Override public Date deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException { final Date date; if (json.isJsonPrimitive()) { date = new Date(this.timeUnit.toMillis(json.getAsLong())); } else if (json.isJsonNull()) { date = null; } else { throw new JsonParseException("Dates represented as time since the epoch must either be numbers or null."); } return date; }
@Override public boolean isBooleanArray() { for (JsonElement element : array) { if (!element.isJsonPrimitive() || !element.getAsJsonPrimitive().isBoolean()) { return false; } } return true; }
@Override public boolean isStringArray() { for (JsonElement element : array) { if (!element.isJsonPrimitive() || !element.getAsJsonPrimitive().isString()) { return false; } } return true; }
@Override public boolean isNumberArray() { for (JsonElement element : array) { if (!element.isJsonPrimitive() || !element.getAsJsonPrimitive().isNumber()) { return false; } } return true; }
/** * Gets the value of the given member as a boolean, null if it doesn't exist */ public static Boolean getAsBoolean(JsonObject o, String member) { if (o.has(member)) { JsonElement e = o.get(member); if (e != null && e.isJsonPrimitive()) { return e.getAsBoolean(); } else { return null; } } else { return null; } }
/** * Gets the value of the given member as a Long, null if it doesn't exist */ public static Long getAsLong(JsonObject o, String member) { if (o.has(member)) { JsonElement e = o.get(member); if (e != null && e.isJsonPrimitive()) { return e.getAsLong(); } else { return null; } } else { return null; } }
/** * Gets the value of the given member as a string, null if it doesn't exist */ public static String getAsString(JsonObject o, String member) { if (o.has(member)) { JsonElement e = o.get(member); if (e != null && e.isJsonPrimitive()) { return e.getAsString(); } else { return null; } } else { return null; } }
private static String nullSafeGetString(JsonObject obj, String field) { return obj.has(field) && obj.get(field).isJsonPrimitive() ? obj.get(field).getAsString() : null; }
/** * Gets the value of the given member (expressed as integer seconds since epoch) as a Date */ public static Date getAsDate(JsonObject o, String member) { if (o.has(member)) { JsonElement e = o.get(member); if (e != null && e.isJsonPrimitive()) { return new Date(e.getAsInt() * 1000L); } else { return null; } } else { return null; } }
@Override public List<GrantedAuthority> getAuthorities(JsonObject introspectionResponse) { List<GrantedAuthority> auth = new ArrayList<>(getAuthorities()); if (introspectionResponse.has("scope") && introspectionResponse.get("scope").isJsonPrimitive()) { String scopeString = introspectionResponse.get("scope").getAsString(); Set<String> scopes = OAuth2Utils.parseParameterList(scopeString); for (String scope : scopes) { auth.add(new SimpleGrantedAuthority("OAUTH_SCOPE_" + scope)); } } return auth; }
public JsonSchema getItemsWithinDataType() { JsonElement element = this.getDataType().get(ARRAY_ITEMS_KEY); if (element.isJsonObject()) { return new JsonSchema(element.getAsJsonObject()); } if (element.isJsonPrimitive()) { return buildBaseSchema(Type.valueOf(element.getAsString().toUpperCase())); } throw new UnsupportedOperationException("Array items can only be defined using JsonObject or JsonPrimitive."); }
@Override public final boolean isBytes() { if (getElement().isJsonPrimitive() && getElement().getAsJsonPrimitive().isString()) { if (cachedDecodedBytes != null) { return true; } try { cachedDecodedBytes = BaseEncoding.base64().decode(getElement().getAsString()); return true; } catch (IllegalArgumentException e) { return false; } } return false; }
@Override public final boolean isString() { return getElement().isJsonPrimitive() && getElement().getAsJsonPrimitive().isString(); }
@Override public final boolean isNumber() { return getElement().isJsonPrimitive() && getElement().getAsJsonPrimitive().isNumber(); }
@Override public int length(final Object obj) { if (isArray(obj)) { return toJsonArray(obj).size(); } else if (isMap(obj)) { return toJsonObject(obj).entrySet().size(); } else { if (obj instanceof JsonElement) { JsonElement element = toJsonElement(obj); if (element.isJsonPrimitive()) { return element.toString().length(); } } } throw new JsonPathException("length operation can not applied to " + obj != null ? obj.getClass().getName() : "null"); }
@Override public final boolean isBoolean() { return getElement().isJsonPrimitive() && getElement().getAsJsonPrimitive().isBoolean(); }
@Override public BehaviorNode deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { BehaviorNode node; if (json.isJsonPrimitive()) { node = getPrimitiveNode(json, context); } else { node = getCompositeNode(json, context); } node = createNode(node); return node; }
@Override public PixelFormat deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (json.isJsonPrimitive() && json.getAsJsonPrimitive().isNumber()) { return new PixelFormat().withDepthBits(json.getAsInt()); } return new PixelFormat().withDepthBits(24); }
public Object unwrap(final Object o) { if (o == null) { return null; } if (!(o instanceof JsonElement)) { return o; } JsonElement e = (JsonElement) o; if (e.isJsonNull()) { return null; } else if (e.isJsonPrimitive()) { JsonPrimitive p = e.getAsJsonPrimitive(); if (p.isString()) { return p.getAsString(); } else if (p.isBoolean()) { return p.getAsBoolean(); } else if (p.isNumber()) { return unwrapNumber(p.getAsNumber()); } } return o; }
@Test public void testSerializer() { BigIntegerBase64Serializer serializer = new BigIntegerBase64Serializer(); BigInteger data = new BigInteger("123456789123456789123456789123456789"); JsonElement serialized = serializer.serialize(data, null, null); assertTrue(serialized.isJsonPrimitive()); assertTrue(((JsonPrimitive) serialized).isString()); assertEquals(data, serializer.deserialize(serialized, null, null)); } }