in johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java [213:261]
private void writeJsonValue(final JsonValue value) {
checkArrayOrValue();
//TODO check null handling
switch (value.getValueType()) {
case ARRAY:
writeStartArray();
final JsonArray array = JsonArray.class.cast(value);
final Iterator<JsonValue> ait = array.iterator();
while (ait.hasNext()) {
write(ait.next());
}
writeEnd();
break;
case OBJECT:
writeStartObject();
final JsonObject object = JsonObject.class.cast(value);
final Iterator<Map.Entry<String, JsonValue>> oit = object.entrySet().iterator();
while (oit.hasNext()) {
final Map.Entry<String, JsonValue> keyval = oit.next();
write(keyval.getKey(), keyval.getValue());
}
writeEnd();
break;
case STRING:
write(JsonString.class.cast(value).getString());
break;
case NUMBER:
final JsonNumber number = JsonNumber.class.cast(value);
if (number instanceof JsonLongImpl) {
write(number.longValueExact());
} else {
write(number.bigDecimalValue());
}
break;
case TRUE:
write(true);
break;
case FALSE:
write(false);
break;
case NULL:
writeNull();
break;
default:
throw new JsonGenerationException("Unknown JsonValue type");
}
}