All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.annotation.JsonValue Maven / Gradle / Ivy

There is a newer version: 1.0.5
Show newest version
/*
 * Copyright © 2019 Dominokit
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.fasterxml.jackson.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Marker annotation that indicates that the value of annotated accessor (either field or "getter"
 * method [a method with non-void return type, no args]) is to be used as the single value to
 * serialize for the instance, instead of the usual method of collecting properties of value.
 * Usually value will be of a simple scalar type (String or Number), but it can be any serializable
 * type (Collection, Map or Bean).
 *
 * 

At most one accessor of a Class can be annotated with this annotation; if more * than one is found, an exception may be thrown. Also, if method signature of annotated method is * not compatible with Getters, an exception may be thrown (whether exception is thrown or not is an * implementation detail (due to filtering during introspection, some annotations may be skipped) * and applications should not rely on specific behavior). * *

A typical usage is that of annotating toString() method so that returned String * value is used as the JSON serialization; and if deserialization is needed, there is matching * constructor or factory method annotated with {@link JsonCreator} annotation. * *

Boolean argument is only used so that sub-classes can "disable" annotation if necessary. * *

NOTE: when use for Java enums, one additional feature is that value returned by * annotated method is also considered to be the value to deserialize from, not just JSON String to * serialize as. This is possible since set of Enum values is constant and it is possible to define * mapping, but can not be done in general for POJO types; as such, this is not used for POJO * deserialization. * * @see JsonCreator */ @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD // since 2.9 }) @Retention(RetentionPolicy.RUNTIME) @JacksonAnnotation public @interface JsonValue { /** * Optional argument that defines whether this annotation is active or not. The only use for value * 'false' if for overriding purposes. Overriding may be necessary when used with "mix-in * annotations" (aka "annotation overrides"). For most cases, however, default value of "true" is * just fine and should be omitted. * * @return boolean */ boolean value() default true; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy