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


Java JsonTypeInfo類代碼示例

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


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

示例1: addJsonTypeInfo

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的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: getObjectMapper

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
@Bean(name = "objectMapper")
public ObjectMapper getObjectMapper() {
    ObjectMapper mapper = new ObjectMapper();

    mapper.registerModule(new GuavaModule());
    mapper.registerModule(new Jdk8Module());
    mapper.registerModule(new JodaModule());
    mapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {
        // borrowed from: http://jackson-users.ning.com/forum/topics/how-to-not-include-type-info-during-serialization-with
        @Override
        protected TypeResolverBuilder<?> _findTypeResolver(MapperConfig<?> config, Annotated ann, JavaType baseType) {

            // Don't serialize JsonTypeInfo Property includes
            if (ann.hasAnnotation(JsonTypeInfo.class)
                    && ann.getAnnotation(JsonTypeInfo.class).include() == JsonTypeInfo.As.PROPERTY
                    && SerializationConfig.class.isAssignableFrom(config.getClass())) {
                return null;

            }

            return super._findTypeResolver(config, ann, baseType);
        }
    });

    return mapper;
}
 
開發者ID:bpatters,項目名稱:eservice,代碼行數:27,代碼來源:CommonBeans.java

示例3: home

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
@RequestMapping("/")
@ResponseBody
public String home(@RequestParam(value = "name", defaultValue = "guest", required = false) String name) throws IOException {
    Random rand = new Random();
    int id = rand.nextInt();

    User webUser = new User(id, name);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(webUser);
    oos.close();
    String webUserOISB64 = Base64.getEncoder().encodeToString(baos.toByteArray());

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.WRAPPER_ARRAY);

    String webUserJackson = objectMapper.writeValueAsString(webUser);
    String webUserJacksonB64 = Base64.getEncoder().encodeToString(webUserJackson.getBytes("utf-8"));
    return String.format("<a href='/?name=test'>set your name</a></br><a href='ois?sess=%s'>look at yourself</a></br><a href='jackson?sess=%s'>look at yourself</a>", webUserOISB64, webUserJacksonB64);
}
 
開發者ID:GrrrDog,項目名稱:ZeroNights-WebVillage-2017,代碼行數:21,代碼來源:DeserController.java

示例4: processSubTypeRule

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的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

示例5: resolveJsonType

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的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

示例6: saveType

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
private void saveType(String path, T object, KeyValueStorage storage) {
    Class<?> clazz = object.getClass();
    String name = PROP_TYPE;
    String value = clazz.getName();
    JsonTypeInfo typeInfo = AnnotationUtils.findAnnotation(clazz, JsonTypeInfo.class);
    if (typeInfo != null && !clazz.equals(typeInfo.defaultImpl())) {
        JsonTypeInfo.As include = typeInfo.include();
        if(include != JsonTypeInfo.As.PROPERTY &&
           include != JsonTypeInfo.As.EXTERNAL_PROPERTY /* it for capability with jackson oddities */) {
            throw new IllegalArgumentException("On " + clazz + " mapping support only " + JsonTypeInfo.As.PROPERTY + " but find: " + include);
        }
        name = getPropertyName(typeInfo);
        value = getJsonType(clazz, typeInfo);
    }
    storage.set(KvUtils.join(path, name), value);
}
 
開發者ID:codeabovelab,項目名稱:haven-platform,代碼行數:17,代碼來源:NodeMapping.java

示例7: testRoot

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
protected void testRoot() {
    // while boundaries are compiler-checked, let's still verify superclass, as generics in Java are easy to bypass
    assertTrue("Invalid root type: " + expectedRoot, PolymorphicConfiguration.class.isAssignableFrom(expectedRoot));

    JsonTypeInfo typeInfo = expectedRoot.getAnnotation(JsonTypeInfo.class);

    //  TODO: test "property" and "use" values of the annotation
    assertNotNull("Root is not annotated with @JsonTypeInfo", typeInfo);
    if (expectedDefault != null) {
        assertTrue("Default type is not specified on root. Expected: " + expectedDefault.getName(),
                hasDefault(typeInfo));
        assertEquals("Expected and actual default types are not the same", expectedDefault,
                typeInfo.defaultImpl());
    } else {
        assertFalse("Expected no default type, but @JsonTypeInfo sets it to " + typeInfo.defaultImpl().getName() + ".",
                hasDefault(typeInfo));
    }

    if (isConcrete(expectedRoot)) {
        JsonTypeName typeName = expectedRoot.getAnnotation(JsonTypeName.class);
        assertNotNull("Concrete root configuration type must be annotated with @JsonTypeName: " + expectedRoot.getName());
    }
}
 
開發者ID:bootique,項目名稱:bootique,代碼行數:24,代碼來源:PolymorphicConfigurationChecker.java

示例8: ServerConnection

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
/**
 * Connects to mmo server with hostname and port and login with given
 * username.
 *
 * @param host     hostname or ip of server
 * @param port     port to connect to
 * @param username login name
 */
public ServerConnection(String host, int port, String username) {
    this.host = host;
    this.port = port;
    this.username = username;

    mapper = new ObjectMapper().setDefaultTyping(
            new ObjectMapper.DefaultTypeResolverBuilder(
                    ObjectMapper.DefaultTyping
                            .OBJECT_AND_NON_CONCRETE)
                    .init(
                            JsonTypeInfo.Id.MINIMAL_CLASS,
                            null)
                    .inclusion(JsonTypeInfo.As.PROPERTY)
                    .typeProperty("type")
    )
            .setSerializationInclusion(JsonInclude.Include.NON_NULL)
            .enable(SerializationFeature.INDENT_OUTPUT)
            .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
            .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

    messageWriter = mapper.writerFor(Message.class);
    messageReader = mapper.reader(Message.class);
}
 
開發者ID:h4ssi,項目名稱:mmo-client,代碼行數:32,代碼來源:ServerConnection.java

示例9: configureObjectMapper

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
/**
 * Configure an existing object mapper to work with Archie RM and AOM Objects.
 * Indentation is enabled. Feel free to disable again in your own code.
 * @param objectMapper
 */
public static void configureObjectMapper(ObjectMapper objectMapper) {
    objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
    objectMapper.enable(SerializationFeature.FLUSH_AFTER_WRITE_VALUE);
    objectMapper.disable(SerializationFeature.WRITE_NULL_MAP_VALUES);
    objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
    objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
    objectMapper.enable(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS);
    objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    //objectMapper.

    objectMapper.registerModule(new JavaTimeModule());


    TypeResolverBuilder typeResolverBuilder = new ArchieTypeResolverBuilder()
            .init(JsonTypeInfo.Id.NAME, new OpenEHRTypeNaming())
            .typeProperty("@type")
            .typeIdVisibility(true)
            .inclusion(JsonTypeInfo.As.PROPERTY);

    objectMapper.setDefaultTyping(typeResolverBuilder);
}
 
開發者ID:nedap,項目名稱:archie,代碼行數:30,代碼來源:JacksonUtil.java

示例10: getJsonTypeInfoAnnotation

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
private JsonTypeInfo getJsonTypeInfoAnnotation()
{
	Class<?> tInspectedClass = this.getClass();
	do
	{
		JsonTypeInfo tCheckedAnnotation = tInspectedClass
				.getAnnotation(JsonTypeInfo.class);
		if (tCheckedAnnotation != null)
		{
			return tCheckedAnnotation;
		}
		tInspectedClass = tInspectedClass.getSuperclass();
	} while (tInspectedClass != null);

	return null;
}
 
開發者ID:krevelen,項目名稱:coala,代碼行數:17,代碼來源:DynamicBean.java

示例11: getJsonTypePropertyString

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
private String getJsonTypePropertyString()
{
	Class<?> tInspectedClass = this.getClass();

	do
	{
		JsonTypeInfo tJsonTypeInfoAnnotation = tInspectedClass
				.getAnnotation(JsonTypeInfo.class);
		if (tJsonTypeInfoAnnotation != null)
		{
			return tJsonTypeInfoAnnotation.property();
		}

		tInspectedClass = tInspectedClass.getSuperclass();
	} while (tInspectedClass != null);

	return null;
}
 
開發者ID:krevelen,項目名稱:coala,代碼行數:19,代碼來源:DynamicBean.java

示例12: serializeWithType

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
@Override
public void serializeWithType(JsonGenerator jgen,
		SerializerProvider provider, TypeSerializer typeSer)
		throws IOException, JsonProcessingException
{
	// check if this class have JsonTypeInfo annotation
	JsonTypeInfo tJsonTypeInfoAnnotation = getJsonTypeInfoAnnotation();
	if (tJsonTypeInfoAnnotation != null)
	{
		setFieldValue(DealField.useCustomField(tJsonTypeInfoAnnotation
				.property()), this.getClass().getName());
		jgen.writeTree(mBeanRootNode);
		deleteField(DealField.useCustomField(tJsonTypeInfoAnnotation
				.property()));
	} else
	{
		jgen.writeTree(mBeanRootNode);
	}
}
 
開發者ID:krevelen,項目名稱:coala,代碼行數:20,代碼來源:DynamicBean.java

示例13: extractMetadata

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的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

示例14: buildTypeSerializer

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
public TypeSerializer buildTypeSerializer(SerializationConfig config,
        JavaType baseType, Collection<NamedType> subtypes)
{
    if (_idType == JsonTypeInfo.Id.NONE) {
        return null;
    }
    TypeIdResolver idRes = idResolver(config, baseType, subtypes, true, false);
    switch (_includeAs) {
    case WRAPPER_ARRAY:
        return new AsArrayTypeSerializer(idRes, null);
    case PROPERTY:
        return new AsPropertyTypeSerializer(idRes, null,
                _typeProperty);
    case WRAPPER_OBJECT:
        return new AsWrapperTypeSerializer(idRes, null);
    case EXTERNAL_PROPERTY:
        return new AsExternalTypeSerializer(idRes, null,
                _typeProperty);
    }
    throw new IllegalStateException("Do not know how to construct standard type serializer for inclusion type: "+_includeAs);
}
 
開發者ID:joyplus,項目名稱:joyplus-tv,代碼行數:22,代碼來源:StdTypeResolverBuilder.java

示例15: buildTypeDeserializer

import com.fasterxml.jackson.annotation.JsonTypeInfo; //導入依賴的package包/類
public TypeDeserializer buildTypeDeserializer(DeserializationConfig config,
        JavaType baseType, Collection<NamedType> subtypes)
{
    if (_idType == JsonTypeInfo.Id.NONE) {
        return null;
    }

    TypeIdResolver idRes = idResolver(config, baseType, subtypes, false, true);
    
    // First, method for converting type info to type id:
    switch (_includeAs) {
    case WRAPPER_ARRAY:
        return new AsArrayTypeDeserializer(baseType, idRes,
                _typeProperty, _typeIdVisible, _defaultImpl);
    case PROPERTY:
        return new AsPropertyTypeDeserializer(baseType, idRes,
                _typeProperty, _typeIdVisible, _defaultImpl);
    case WRAPPER_OBJECT:
        return new AsWrapperTypeDeserializer(baseType, idRes,
                _typeProperty, _typeIdVisible, _defaultImpl);
    case EXTERNAL_PROPERTY:
        return new AsExternalTypeDeserializer(baseType, idRes,
                _typeProperty, _typeIdVisible, _defaultImpl);
    }
    throw new IllegalStateException("Do not know how to construct standard type serializer for inclusion type: "+_includeAs);
}
 
開發者ID:joyplus,項目名稱:joyplus-tv,代碼行數:27,代碼來源:StdTypeResolverBuilder.java


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