當前位置: 首頁>>代碼示例>>Java>>正文


Java JsonSubTypes類代碼示例

本文整理匯總了Java中com.fasterxml.jackson.annotation.JsonSubTypes的典型用法代碼示例。如果您正苦於以下問題:Java JsonSubTypes類的具體用法?Java JsonSubTypes怎麽用?Java JsonSubTypes使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


JsonSubTypes類屬於com.fasterxml.jackson.annotation包,在下文中一共展示了JsonSubTypes類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: addJsonTypeInfo

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
private void addJsonTypeInfo(JDefinedClass klass, ObjectTypeDeclaration type) {
    if (!context.getConfig().isJacksonTypeInfo()) {
        return;
    }
    if (type.discriminator() == null) {
        return;
    }
    List<String> derivedTypes = context.getApiModel().findDerivedTypes(type.name());
    if (derivedTypes.isEmpty()) {
        return;
    }
    JAnnotationUse typeInfo = klass.annotate(JsonTypeInfo.class);
    typeInfo.param("use", Id.NAME);
    typeInfo.param("include", As.EXISTING_PROPERTY);
    typeInfo.param("property", type.discriminator());

    JAnnotationUse subTypes = klass.annotate(JsonSubTypes.class);
    JAnnotationArrayMember typeArray = subTypes.paramArray(VALUE);

    for (String derivedType : derivedTypes) {
        JDefinedClass subtype = pkg._getClass(derivedType);
        typeArray.annotate(Type.class).param(VALUE, subtype);
    }
}
 
開發者ID:ops4j,項目名稱:org.ops4j.ramler,代碼行數:25,代碼來源:PojoGeneratingApiVisitor.java

示例2: assignTypeNameIfNecessary

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
public void assignTypeNameIfNecessary(ClassesMapping classesMapping, ClassMappingInternal<Object> currentClassMapping) {
    if (!currentClassMapping.hasAnnotation(JsonTypeName.class)) {
        typesWithPolymorphism.stream()
                .filter(typeWithPolymorphism -> typeWithPolymorphism.isAssignableFrom(currentClassMapping.getType()))
                .findFirst()
                .ifPresent(typeWithPolymorphism -> classesMapping.getOpt(typeWithPolymorphism)
                        .ifPresent(classMapping -> classMapping.getAnnotationOpt(JsonSubTypes.class)
                                .ifPresent((jsonSubTypes) -> Arrays.asList(jsonSubTypes.value()).stream()
                                        .filter(subtype -> subtype.value().equals(classMapping.getType()))
                                        .findFirst()
                                        .map(JsonSubTypes.Type::name)
                                        .ifPresent(classMapping::typeName)
                                )
                        )
                );
    }
}
 
開發者ID:mrenou,項目名稱:jacksonatic,代碼行數:18,代碼來源:TypeNameAutoAssigner.java

示例3: processSubTypeRule

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
@Override
public void processSubTypeRule(TypeSpec.Builder typeSpec, TypeModel typeModel) {
    SubTypeModel subTypeModel = typeModel.getSubTypes();

    AnnotationSpec typeInfoAnnotation = AnnotationSpec.builder(JsonTypeInfo.class)
            .addMember("use", "$L", "JsonTypeInfo.Id.NAME")
            .addMember("include", "$L", "JsonTypeInfo.As." + (subTypeModel.isExistingProperty() ? "EXISTING_PROPERTY" : "PROPERTY"))
            .addMember("property", "$S", subTypeModel.getProperty())
            .build();

    AnnotationSpec.Builder subTypesBuilder = AnnotationSpec.builder(JsonSubTypes.class);
    for (Map.Entry<String, String> subType : subTypeModel.getSubTypeMapping().entrySet()) {
        subTypesBuilder.addMember("value", "$L",
                AnnotationSpec.builder(JsonSubTypes.Type.class)
                        .addMember("value", "$T.class", getClassName(subType.getValue()))
                        .addMember("name", "$S", subType.getKey())
                        .build());
    }

    typeSpec.addAnnotation(typeInfoAnnotation);
    typeSpec.addAnnotation(subTypesBuilder.build());
}
 
開發者ID:flipkart-incubator,項目名稱:Lyrics,代碼行數:23,代碼來源:JacksonStyle.java

示例4: resolveJsonType

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
@SuppressWarnings("unchecked")
private <S> Class<S> resolveJsonType(String path, Class<S> type) {
    JsonTypeInfo typeInfo = AnnotationUtils.findAnnotation(type, JsonTypeInfo.class);
    if (typeInfo == null) {
        return null;
    }
    String property = getPropertyName(typeInfo);
    String proppath = KvUtils.join(path, property);
    try {
        KvNode node = getStorage().get(proppath);
        if(node == null) {
            return null;
        }
        String str = node.getValue();
        JsonSubTypes subTypes = AnnotationUtils.findAnnotation(type, JsonSubTypes.class);
        for (JsonSubTypes.Type t : subTypes.value()) {
            if (t.name().equals(str)) {
                return (Class<S>) t.value();
            }
        }
    } catch (Exception e) {
        log.error("can't instantiate class", e);
    }
    return null;
}
 
開發者ID:codeabovelab,項目名稱:haven-platform,代碼行數:26,代碼來源:NodeMapping.java

示例5: getSubTypes

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
private void getSubTypes(ClassInformation information, ReflectClass<?> cls) {
    JsonSubTypes annot = cls.getAnnotation(JsonSubTypes.class);
    if (annot == null) {
        return;
    }

    for (JsonSubTypes.Type subtype : annot.value()) {
        Class<?> subclass = subtype.value();
        ClassInformation subtypeInformation = get(subclass.getName());
        if (subtypeInformation == null) {
            continue;
        }
        information.inheritance.subTypes.add(subtypeInformation);
        // TODO check whether name conflicts with one got from JsonTypeName
        if (!subtype.name().isEmpty()) {
            subtypeInformation.typeName = subtype.name();
        }
        if (subtypeInformation.typeName == null) {
            subtypeInformation.typeName = "";
        }
    }
}
 
開發者ID:konsoletyper,項目名稱:teavm-flavour,代碼行數:23,代碼來源:ClassInformationProvider.java

示例6: getSchema

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
protected void getSchema(Class<?> clazz, ObjectNode schema, ArrayNode form) throws JsonMappingException {

		SchemaFactoryWrapper factoryWrapper = new SchemaFactoryWrapper();

		JsonSubTypes subtype = clazz.getAnnotation(JsonSubTypes.class);
		if (subtype != null) {
			doForSubtype(factoryWrapper, schema, form, subtype);
		} else {
			objectMapper.acceptJsonFormatVisitor(objectMapper.constructType(clazz), factoryWrapper);
			JsonSchema jsonSchema = factoryWrapper.finalSchema();
			jsonSchema.setId(null);
			String title = clazz.getSimpleName().replaceAll("\\.", "_");
			jsonSchema.asObjectSchema().setTitle(title);

			iterateOnProperties(jsonSchema.asObjectSchema().getProperties());
			schema.putPOJO(title, jsonSchema);
		}
	}
 
開發者ID:Treydone,項目名稱:mandrel,代碼行數:19,代碼來源:SchemaGenerator.java

示例7: extractMetadata

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
private static ImmutableMap<JClassType, String> extractMetadata( TreeLogger logger, RebindConfiguration configuration, JClassType
        type, Optional<JsonTypeInfo> jsonTypeInfo, Optional<JsonSubTypes> propertySubTypes, Optional<JsonSubTypes> typeSubTypes,
                                                                 ImmutableList<JClassType> allSubtypes ) throws
        UnableToCompleteException {

    ImmutableMap.Builder<JClassType, String> classToMetadata = ImmutableMap.builder();

    classToMetadata.put( type, extractTypeMetadata( logger, configuration, type, type, jsonTypeInfo
            .get(), propertySubTypes, typeSubTypes, allSubtypes ) );

    for ( JClassType subtype : allSubtypes ) {
        classToMetadata.put( subtype, extractTypeMetadata( logger, configuration, type, subtype, jsonTypeInfo
                .get(), propertySubTypes, typeSubTypes, allSubtypes ) );
    }
    return classToMetadata.build();
}
 
開發者ID:nmorel,項目名稱:gwt-jackson,代碼行數:17,代碼來源:BeanProcessor.java

示例8: getPayload

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(name = "one", value = PayloadOne.class),
  @JsonSubTypes.Type(name = "two", value = org.immutables.fixture.jackson.poly2.PayloadTwo.class)
})
@JsonProperty("payload")
public abstract Payload getPayload();
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:8,代碼來源:_AbstractResponse.java

示例9: value

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonSubTypes({
    @Type(name = "I", value = Integer.class),
    @Type(name = "O", value = Double.class)
})
// the annotation will be copied to a builder setter
public abstract @Nullable Object value();
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:8,代碼來源:CustomBuilderDeserialize.java

示例10: setKdfparams

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
        property = "kdf")
@JsonSubTypes({
        @JsonSubTypes.Type(value = Aes128CtrKdfParams.class, name = Wallet.AES_128_CTR),
        @JsonSubTypes.Type(value = ScryptKdfParams.class, name = Wallet.SCRYPT)
})
// To support my Ether Wallet keys uncomment this annotation & comment out the above
//  @JsonDeserialize(using = KdfParamsDeserialiser.class)
// Also add the following to the ObjectMapperFactory
// objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
public void setKdfparams(KdfParams kdfparams) {
    this.kdfparams = kdfparams;
}
 
開發者ID:web3j,項目名稱:web3j,代碼行數:16,代碼來源:WalletFile.java

示例11: addNamedSubType

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
public void addNamedSubType(Class<? extends T> subType, String name) {
    List<JsonSubTypes.Type> types = Optional.ofNullable(annotations.get(JsonSubTypes.class))
            .map(annotation -> new ArrayList<>(Arrays.asList(((JsonSubTypes) annotation).value())))
            .orElse(new ArrayList<>());
    types.add(JacksonaticJsonSubTypesType.type(name, subType).build());
    annotations.add(jsonSubTypes(types.toArray(new JsonSubTypes.Type[types.size()])));
}
 
開發者ID:mrenou,項目名稱:jacksonatic,代碼行數:8,代碼來源:ClassMappingInternal.java

示例12: getJsonType

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
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;
}
 
開發者ID:codeabovelab,項目名稱:haven-platform,代碼行數:30,代碼來源:NodeMapping.java

示例13: resolveNonArrayTypes

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
private static List<JavaType> resolveNonArrayTypes(JavaType javaType, TypeFactory typeFactory) {
    List<JavaType> types = new ArrayList<>();
    types.add(javaType);

    Class<?> rawClass = javaType.getRawClass();
    JsonSubTypes jsonSubTypes = rawClass.getAnnotation(JsonSubTypes.class);
    if (jsonSubTypes != null) {
        for (JsonSubTypes.Type subType : jsonSubTypes.value()) {
            JavaType javaSubType = typeFactory.constructType(subType.value());
            types.add(javaSubType);
        }
    }

    return types;
}
 
開發者ID:ScaCap,項目名稱:spring-auto-restdocs,代碼行數:16,代碼來源:TypeUtil.java

示例14: determineBaseType

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
private Class<?> determineBaseType(Class<?> type)
{
	Class<?> baseType = type;
	while ((baseType = baseType.getSuperclass()) != null)
	{
		JsonSubTypes subtypesAnnotation = getAnnotationByType(baseType, JsonSubTypes.class);
		if (containsType(subtypesAnnotation, type))
		{
			return baseType;
		}
	}
	return type;
}
 
開發者ID:yonadev,項目名稱:yona-server,代碼行數:14,代碼來源:JsonRootRelProvider.java

示例15: findSubtypes

import com.fasterxml.jackson.annotation.JsonSubTypes; //導入依賴的package包/類
public List<NamedType> findSubtypes(Annotated paramAnnotated)
{
  JsonSubTypes localJsonSubTypes = (JsonSubTypes)paramAnnotated.getAnnotation(JsonSubTypes.class);
  if (localJsonSubTypes == null)
    return null;
  JsonSubTypes.Type[] arrayOfType = localJsonSubTypes.value();
  ArrayList localArrayList = new ArrayList(arrayOfType.length);
  int i = arrayOfType.length;
  for (int j = 0; j < i; j++)
  {
    JsonSubTypes.Type localType = arrayOfType[j];
    localArrayList.add(new NamedType(localType.value(), localType.name()));
  }
  return localArrayList;
}
 
開發者ID:mmmsplay10,項目名稱:QuizUpWinner,代碼行數:16,代碼來源:JacksonAnnotationIntrospector.java


注:本文中的com.fasterxml.jackson.annotation.JsonSubTypes類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。