# Package com.fasterxml.jackson.core

Main public API classes of the core streaming JSON processor: most importantly `JsonFactory` used for constructing JSON parser (`JsonParser`) and generator (`JsonGenerator`) instances.

See: Description

Interface Summary
FormatFeature: Marker interface that is to be implemented by data format - specific features.
FormatSchema: Simple tag interface used to mark schema objects that are used by some `JsonParser` and `JsonGenerator` implementations to further specify structure of expected format.
JsonTokenId: Interface defined to contain ids accessible with `JsonToken.id()`.
PrettyPrinter: Interface for objects that implement pretty printer functionality, such as indentation.
SerializableString: Interface that defines how Jackson package can interact with efficient pre-serialized or lazily-serialized and reused String representations.
TreeNode: Marker interface used to denote JSON Tree nodes, as far as the core package knows them (which is very little): mostly needed to allow `ObjectCodec` to have some level of interoperability.
Versioned: Interface that those Jackson components that are explicitly versioned will implement.

Class Summary
Base64Variant: Class used to define specific details of which variant of Base64 encoding/decoding is to be used.
Base64Variants: Container for commonly used Base64 variants: `Base64Variants.MIME` `Base64Variants.MIME_NO_LINEFEEDS` `Base64Variants.PEM` `Base64Variants.MODIFIED_FOR_URL` See entries for full description of differences.
JsonFactory: The main factory class of Jackson package, used to configure and construct reader (aka parser, `JsonParser`) and writer (aka generator, `JsonGenerator`) instances.
JsonFactoryBuilder: `TSFBuilder` implementation for constructing vanilla `JsonFactory` instances for reading/writing JSON encoded content.
JsonGenerator: Base class that defines public API for writing JSON content.
JsonLocation: Object that encapsulates Location information used for reporting parsing (or potentially generation) errors, as well as current location within input streams.
JsonParser: Base class that defines public API for reading JSON content.
JsonpCharacterEscapes: Convenience `CharacterEscapes` implementation that escapes Unicode characters `0x2028` and `0x2029` (in addition to characters escaped otherwise), which are apparently considered linefeeds as per newer Javascript specifications, and consequently problematic when using JSONP (see https://en.wikipedia.org/wiki/JSONP).
JsonPointer: Implementation of JSON Pointer specification.
JsonStreamContext: Shared base class for streaming processing contexts used during reading and writing of Json content using Streaming API.
ObjectCodec: Abstract class that defines the interface that `JsonParser` and `JsonGenerator` use to serialize and deserialize regular Java objects (POJOs aka Beans).
TokenStreamFactory: Intermediate base class for actual format-specific factories for constructing parsers (reading) and generators (writing).
TreeCodec: Interface that defines objects that can read and write `TreeNode` instances using Streaming API.
TSFBuilder<F extends JsonFactory,B extends TSFBuilder<F,B>>: Since 2.10, Builder class is offered for creating token stream factories with difference configurations: with 3.x they will be fully immutable.
Version: Object that encapsulates versioning information of a component.

Enum Summary
Base64Variant.PaddingReadBehaviour: Defines how the Base64Variant deals with Padding while reading
JsonEncoding: Enumeration that defines legal encodings that can be used for JSON content, based on list of allowed encodings from JSON specification.
JsonFactory.Feature: Enumeration that defines all on/off features that can only be changed for `JsonFactory`.
JsonGenerator.Feature: Enumeration that defines all togglable features for generators.
JsonParser.Feature: Enumeration that defines all on/off features for parsers.
JsonParser.NumberType: Enumeration of possible "native" (optimal) types that can be used for numbers.
JsonToken: Enumeration for basic token types used for returning results of parsing JSON content.
StreamReadCapability: Set of on/off capabilities that a `JsonParser` for given format (or in case of buffering, original format) has.
StreamReadFeature: Token reader (parser) features not-specific to any particular format backend.
StreamWriteCapability: Set of on/off capabilities that a `JsonGenerator` for given format (or in case of buffering, original format) has.
StreamWriteFeature: Token writer (generator) features not-specific to any particular format backend.

Exception Summary
JacksonException: Base class for all Jackson-produced checked exceptions.
JsonGenerationException: Exception type for exceptions during JSON writing, such as trying to output content in wrong context (non-matching end-array or end-object, for example).
JsonParseException: Exception type for parsing problems, used when non-well-formed content (content that does not conform to JSON syntax as per specification) is encountered.
JsonProcessingException: Intermediate base class for all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems.

## Package com.fasterxml.jackson.core Description

Main public API classes of the core streaming JSON processor: most importantly `JsonFactory` used for constructing JSON parser (`JsonParser`) and generator (`JsonGenerator`) instances.

Public API of the higher-level mapping interfaces ("Mapping API") is found from the "jackson-databind" bundle, except for following base interfaces that are defined here:

- `TreeNode` is included within Streaming API to support integration of the Tree Model (which is based on `JsonNode`) with the basic parsers and generators (iff using mapping-supporting factory: which is part of Mapping API, not core)
- `ObjectCodec` is included so that reference to the object capable of serializing/deserializing Objects to/from JSON (usually, `com.fasterxml.jackson.databind.ObjectMapper`) can be exposed, without adding direct dependency to implementation.