in johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java [283:329]
private boolean writePrimitives(final String key, final Class<?> type, final Object value,
final JsonGenerator generator) {
boolean handled = false;
if (type == String.class) {
generator.write(key, value.toString());
handled = true;
} else if (JsonValue.class.isAssignableFrom(type)) {
generator.write(key, JsonValue.class.cast(value));
handled = true;
} else if (type == long.class || type == Long.class) {
final long longValue = Long.class.cast(value).longValue();
if (isInJsRange(longValue)) {
generator.write(key, longValue);
} else {
generator.write(key, value.toString());
}
handled = true;
} else if (isInt(type)) {
generator.write(key, Number.class.cast(value).intValue());
handled = true;
} else if (isFloat(type)) {
if (type == Float.class || type == float.class) {
if (!Float.isNaN(Float.class.cast(value))) {
generator.write(key, new BigDecimal(value.toString()));
}
} else {
final double doubleValue = Number.class.cast(value).doubleValue();
if (!Double.isNaN(doubleValue)) {
generator.write(key, doubleValue);
}
}
handled = true;
} else if (type == boolean.class || type == Boolean.class) {
generator.write(key, Boolean.class.cast(value));
handled = true;
} else if (type == BigDecimal.class) {
generator.write(key, BigDecimal.class.cast(value));
handled = true;
} else if (type == BigInteger.class) {
generator.write(key, BigInteger.class.cast(value));
handled = true;
} else if (type == char.class || type == Character.class) {
generator.write(key, Character.class.cast(value).toString());
handled = true;
}
return handled;
}