下面列出了怎么用com.fasterxml.jackson.databind.jsonFormatVisitors.JsonValueFormat的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected void _acceptTimestampVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException
{
SerializerProvider provider = visitor.getProvider();
boolean useTimestamp = (provider != null) && useTimestamp(provider);
if (useTimestamp) {
super._acceptTimestampVisitor(visitor, typeHint);
} else {
JsonStringFormatVisitor v2 = visitor.expectStringFormat(typeHint);
if (v2 != null) {
v2.format(JsonValueFormat.DATE_TIME);
}
}
}
@Override
protected void _acceptTimestampVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException
{
JsonIntegerFormatVisitor v2 = visitor.expectIntegerFormat(typeHint);
if (v2 != null) {
v2.numberType(JsonParser.NumberType.LONG);
SerializerProvider provider = visitor.getProvider();
if ((provider != null) && useNanoseconds(provider)) {
// big number, no more specific qualifier to use...
} else { // otherwise good old Unix timestamp, in milliseconds
v2.format(JsonValueFormat.UTC_MILLISEC);
}
}
}
@Override
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)
throws JsonMappingException
{
if (useTimestamp(visitor.getProvider())) {
_acceptTimestampVisitor(visitor, typeHint);
} else {
JsonStringFormatVisitor v2 = visitor.expectStringFormat(typeHint);
if (v2 != null) {
v2.format(JsonValueFormat.TIME);
}
}
}
@Override
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException
{
SerializerProvider provider = visitor.getProvider();
boolean useTimestamp = (provider != null) && useTimestamp(provider);
if (useTimestamp) {
_acceptTimestampVisitor(visitor, typeHint);
} else {
JsonStringFormatVisitor v2 = visitor.expectStringFormat(typeHint);
if (v2 != null) {
v2.format(JsonValueFormat.DATE);
}
}
}
@SuppressWarnings("PMD.CyclomaticComplexity")
static JsonSchema schemaFor(final JDBCType jdbcType) {
final JsonSchemaFactory factory = new JsonSchemaFactory();
switch (jdbcType) {
case ARRAY:
return factory.arraySchema();
case BINARY:
case BLOB:
case LONGVARBINARY:
case VARBINARY:
final ArraySchema binary = factory.arraySchema();
binary.setItemsSchema(factory.integerSchema());
return binary;
case BIT:
case BOOLEAN:
return factory.booleanSchema();
case CHAR:
case CLOB:
case DATALINK:
case LONGNVARCHAR:
case LONGVARCHAR:
case NCHAR:
case NCLOB:
case NVARCHAR:
case ROWID:
case SQLXML:
case VARCHAR:
return factory.stringSchema();
case DATE:
case TIME:
case TIMESTAMP:
case TIMESTAMP_WITH_TIMEZONE:
case TIME_WITH_TIMEZONE:
final StringSchema date = factory.stringSchema();
date.setFormat(JsonValueFormat.DATE_TIME);
return date;
case DECIMAL:
case DOUBLE:
case FLOAT:
case NUMERIC:
case REAL:
return factory.numberSchema();
case INTEGER:
case BIGINT:
case SMALLINT:
case TINYINT:
return factory.integerSchema();
case NULL:
return factory.nullSchema();
case DISTINCT:
case JAVA_OBJECT:
case OTHER:
case REF:
case REF_CURSOR:
case STRUCT:
default:
return factory.anySchema();
}
}
public static boolean isKnownFormat(String format) {
return format != null && Stream.of(JsonValueFormat.values())
.map(Objects::toString)
.anyMatch(jsonSchemaFormat -> jsonSchemaFormat.equals(format));
}
@Override
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)
throws JsonMappingException
{
visitStringFormat(visitor, typeHint, JsonValueFormat.DATE_TIME);
}