package com.fasterxml.jackson.databind.exc;

import com.fasterxml.jackson.core.JsonLocation;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.util.ClassUtil;

General exception type used as the base class for all JsonMappingExceptions that are due to input not mapping to target definition; these are typically considered "client errors" since target type definition itself is not the root cause but mismatching input. This is in contrast to InvalidDefinitionException which signals a problem with target type definition and not input.

This type is used as-is for some input problems, but in most cases there should be more explicit subtypes to use.

NOTE: name chosen to differ from `java.util.InputMismatchException` since while that would have been better name, use of same overlapping name causes nasty issues with IDE auto-completion, so slightly less optimal chosen.

Since:2.9
/** * General exception type used as the base class for all {@link JsonMappingException}s * that are due to input not mapping to target definition; these are typically * considered "client errors" since target type definition itself is not the root cause * but mismatching input. This is in contrast to {@link InvalidDefinitionException} which * signals a problem with target type definition and not input. *<p> * This type is used as-is for some input problems, but in most cases there should be * more explicit subtypes to use. *<p> * NOTE: name chosen to differ from `java.util.InputMismatchException` since while that * would have been better name, use of same overlapping name causes nasty issues * with IDE auto-completion, so slightly less optimal chosen. * * @since 2.9 */
@SuppressWarnings("serial") public class MismatchedInputException extends JsonMappingException {
Type of value that was to be deserialized
/** * Type of value that was to be deserialized */
protected Class<?> _targetType; protected MismatchedInputException(JsonParser p, String msg) { this(p, msg, (JavaType) null); } protected MismatchedInputException(JsonParser p, String msg, JsonLocation loc) { super(p, msg, loc); } protected MismatchedInputException(JsonParser p, String msg, Class<?> targetType) { super(p, msg); _targetType = targetType; } protected MismatchedInputException(JsonParser p, String msg, JavaType targetType) { super(p, msg); _targetType = ClassUtil.rawClass(targetType); } // Only to prevent super-class static method from getting called @Deprecated // as of 2.9 public static MismatchedInputException from(JsonParser p, String msg) { return from(p, (Class<?>) null, msg); } public static MismatchedInputException from(JsonParser p, JavaType targetType, String msg) { return new MismatchedInputException(p, msg, targetType); } public static MismatchedInputException from(JsonParser p, Class<?> targetType, String msg) { return new MismatchedInputException(p, msg, targetType); } public MismatchedInputException setTargetType(JavaType t) { _targetType = t.getRawClass(); return this; }
Accessor for getting intended target type, with which input did not match, if known; `null` if not known for some reason.
/** * Accessor for getting intended target type, with which input did not match, * if known; `null` if not known for some reason. */
public Class<?> getTargetType() { return _targetType; } }