/** * Converts the given value to a JSON representation. * * @param gen the object to create/store the JSON representation * @param name the JSON name to store the value as * @param value the value to store */ public static void writeValueToJson(JsonGenerator gen, String name, Object value) { if (value instanceof Number) { gen.write(name, ((Number) value).doubleValue()); } else if (value instanceof String) { gen.write(name, (String) value); } else if (value instanceof List) { @SuppressWarnings("unchecked") List<String> strings = (List<String>) value; gen.write(name, fromListString(strings).build()); } else if (value instanceof ListNumber) { gen.write(name, fromListNumber((ListNumber) value).build()); } else if (value instanceof VType) { gen.write(name, VTypeToJson.toJson((VType) value)); } else { throw new UnsupportedOperationException("Value " + value.getClass().getSimpleName() + " is not supported"); } }
/** * Converts the given JSON value to either a vtype, a Java time or a * ListNumber. * * @param msgValue the JSON value * @return the converted type */ public static Object readValueFromJson(JsonValue msgValue) { if (msgValue instanceof JsonObject) { return VTypeToJson.toVType((JsonObject) msgValue); } else if (msgValue instanceof JsonNumber) { return ((JsonNumber) msgValue).doubleValue(); } else if (msgValue instanceof JsonString){ return ((JsonString) msgValue).getString(); } else if (msgValue instanceof JsonArray){ JsonArray array = (JsonArray) msgValue; if (isNumericArray(array)) { return toListDouble(array); } else if (isStringArray(array)) { return toListString(array); } else { return null; } } else { return null; } }