下面列出了com.fasterxml.jackson.annotation.JsonTypeInfo#Id ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @since 2.9
*/
protected StdTypeResolverBuilder(JsonTypeInfo.Id idType,
JsonTypeInfo.As idAs, String propName) {
_idType = idType;
_includeAs = idAs;
_typeProperty = propName;
}
@Override
public StdTypeResolverBuilder init(JsonTypeInfo.Id idType, TypeIdResolver idRes)
{
// sanity checks
if (idType == null) {
throw new IllegalArgumentException("idType cannot be null");
}
_idType = idType;
_customIdResolver = idRes;
// Let's also initialize property name as per idType default
_typeProperty = idType.getDefaultPropertyName();
return this;
}
private String getPropertyName(JsonTypeInfo typeInfo) {
String property = typeInfo.property();
if (property.isEmpty()) {
JsonTypeInfo.Id use = typeInfo.use();
property = use.getDefaultPropertyName();
}
return property;
}
private String getJsonType(Class<?> clazz, JsonTypeInfo typeInfo) {
String value;
JsonTypeInfo.Id use = typeInfo.use();
switch (use) {
case CLASS:
value = clazz.getName();
break;
case NAME: {
JsonSubTypes.Type needed = null;
JsonSubTypes subTypes = AnnotationUtils.findAnnotation(clazz, JsonSubTypes.class);
if(subTypes != null) {
for(JsonSubTypes.Type type: subTypes.value()) {
if(type.value().equals(clazz)) {
needed = type;
break;
}
}
}
if(needed == null) {
throw new IllegalArgumentException("On " + clazz + " can not find 'JsonSubTypes' record for current type.");
}
value = needed.name();
break;
}
default:
throw new IllegalArgumentException("On " + clazz + " find unexpected 'JsonTypeInfo.use' value: " + use);
}
return value;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.NAME;
}
/** {@inheritDoc} */
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() { return JsonTypeInfo.Id.NAME; }
@Override
public JsonTypeInfo.Id getMechanism() { return JsonTypeInfo.Id.CLASS; }
@Override
public JsonTypeInfo.Id getMechanism() { return JsonTypeInfo.Id.MINIMAL_CLASS; }
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CUSTOM;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.NAME;
}
@Override
public JsonTypeInfo.Id getMechanism() {
return JsonTypeInfo.Id.CLASS;
}