public enum StreamReadCapability extends Enum<StreamReadCapability> implements JacksonFeature
JsonParser
for given format
(or in case of buffering, original format) has.
Used in some cases to adjust aspects of things like content conversions,
coercions and validation by format-agnostic functionality.
Specific or expected usage documented by individual capability entry
Javadocs.Enum Constant and Description |
---|
DUPLICATE_PROPERTIES
Capability that indicates that data format can expose multiple properties
with same name ("duplicates") within one Object context.
|
EXACT_FLOATS
Capability that indicates whether data format supports reporting of
accurate floating point values (with respect to reported numeric type,
JsonParser.NumberType.DOUBLE ) or not. |
SCALARS_AS_OBJECTS
Capability that indicates that data format may in some cases expose Scalar values
(whether typed or untyped) as Object values.
|
UNTYPED_SCALARS
Capability that indicates that data format only exposed "untyped" scalars: that is,
instead of Number, Boolean and String types all scalar values are reported as
text (
JsonToken.VALUE_STRING )
unless some sort of coercion is implied by caller. |
Modifier and Type | Method and Description |
---|---|
boolean |
enabledByDefault()
Accessor for checking whether this feature is enabled by default.
|
boolean |
enabledIn(int flags)
Convenience method for checking whether feature is enabled in given bitmask.
|
int |
getMask()
Returns bit mask for this feature instance; must be a single bit,
that is of form
1 << N . |
static StreamReadCapability |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static StreamReadCapability[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final StreamReadCapability DUPLICATE_PROPERTIES
xml
that
have content model that does not map cleanly to JSON-based token stream.
Capability may be used for allowing secondary mapping of such duplicates
in case of using Tree Model (see TreeNode
), or "untyped" databinding
(mapping content as generic Object
).
Capability is currently only enabled for XML format backend.
public static final StreamReadCapability SCALARS_AS_OBJECTS
Capability is currently only enabled for XML format backend.
public static final StreamReadCapability UNTYPED_SCALARS
JsonToken.VALUE_STRING
)
unless some sort of coercion is implied by caller.
This capability is true for many textual formats like CSV, Properties and XML.
public static final StreamReadCapability EXACT_FLOATS
JsonParser.NumberType.DOUBLE
) or not.
This usually depends on whether format stores such values natively
(as IEEE binary FP formats for java.lang.Float
and java.lang.Double
;
using some other value preserving presentation for java.math.BigDecimal
)
or not: most binary formats do, and most textual formats do not (at least for
Float
and Double
, specifically).
In case of JSON numbers (as well as for most if not all textual formats),
all floating-point numbers are represented simply by decimal (10-base)
textual representation and can only be represented accurately using
BigDecimal
. But for performance reasons they may be
(depending on settings) be exposed as Double
s (that is,
JsonParser.NumberType.DOUBLE
).
Note that methods like JsonParser.getNumberValueExact()
,
JsonParser.getValueAsString()
and
JsonParser.getDecimalValue()
report values without
precision loss.
The main intended use case is to let non-Jackson code to handle cases
where exact accuracy is necessary in a way that handling does not incur
unnecessary conversions across different formats: for example, when reading
binary format, simple access is essentially guaranteed to expose value exactly
as encoded by the format (as float
, double
or BigDecimal
),
whereas for textual formats like JSON it is necessary to access value explicitly
as BigDecimal
using JsonParser#getDecimalValue
.
Capability is false for text formats like JSON, but true for binary formats like Smile, MessagePack, etc., where type is precisely and inexpensively indicated by format.
public static StreamReadCapability[] values()
for (StreamReadCapability c : StreamReadCapability.values()) System.out.println(c);
public static StreamReadCapability valueOf(String name)
name
- the name of the enum constant to be returned.IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is nullpublic boolean enabledByDefault()
JacksonFeature
enabledByDefault
in interface JacksonFeature
public boolean enabledIn(int flags)
JacksonFeature
enabledIn
in interface JacksonFeature
flags
- Bit field that contains a set of enabled features of this typepublic int getMask()
JacksonFeature
1 << N
.getMask
in interface JacksonFeature
Copyright © 2008–2024 FasterXML. All rights reserved.