or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

exception-handling.mdfactory-configuration.mdfeatures-configuration.mdindex.mdjson-generation.mdjson-parsing.mdutilities-advanced.md
tile.json

tessl/maven-com-fasterxml-jackson-core--jackson-core

Core Jackson processing abstractions (aka Streaming API), implementation for JSON

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.fasterxml.jackson.core/jackson-core@2.19.x

To install, run

npx @tessl/cli install tessl/maven-com-fasterxml-jackson-core--jackson-core@2.19.0

index.mddocs/

Jackson Core

Jackson Core provides the fundamental streaming JSON parsing and generation capabilities for the Jackson data processing toolkit. It offers low-level incremental processing through a streaming API with JsonParser for reading and JsonGenerator for writing JSON content, serving as the foundation for all Jackson-based JSON processing including data-binding and alternative data formats.

Package Information

  • Package Name: jackson-core
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.19.0</version>
    </dependency>

Core Imports

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonToken;

Basic Usage

import com.fasterxml.jackson.core.*;
import java.io.*;

public class BasicExample {
    public static void main(String[] args) throws Exception {
        // Create a reusable JsonFactory
        JsonFactory factory = JsonFactory.builder()
            .enable(JsonReadFeature.ALLOW_JAVA_COMMENTS)
            .build();

        // Reading JSON
        String jsonInput = "{\"name\":\"John\",\"age\":30,\"active\":true}";
        JsonParser parser = factory.createParser(jsonInput);
        
        while (parser.nextToken() != JsonToken.END_OBJECT) {
            if (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
                String fieldName = parser.getCurrentName();
                parser.nextToken();
                
                switch (fieldName) {
                    case "name":
                        String name = parser.getValueAsString();
                        System.out.println("Name: " + name);
                        break;
                    case "age":
                        int age = parser.getValueAsInt();
                        System.out.println("Age: " + age);
                        break;
                    case "active":
                        boolean active = parser.getValueAsBoolean();
                        System.out.println("Active: " + active);
                        break;
                }
            }
        }
        parser.close();

        // Writing JSON
        StringWriter stringWriter = new StringWriter();
        JsonGenerator generator = factory.createGenerator(stringWriter);
        
        generator.writeStartObject();
        generator.writeStringField("name", "Jane");
        generator.writeNumberField("age", 25);
        generator.writeBooleanField("active", false);
        generator.writeEndObject();
        generator.close();
        
        System.out.println("Generated JSON: " + stringWriter.toString());
    }
}

Architecture

Jackson Core is built around several key components:

  • JsonFactory: Thread-safe factory for creating parsers and generators with configurable features
  • Streaming API: Token-based parsing (JsonParser) and generation (JsonGenerator) for memory-efficient processing
  • Feature System: Comprehensive configuration through feature enums for reading and writing behavior
  • Constraint System: Configurable limits for security and performance (StreamReadConstraints, StreamWriteConstraints)
  • Symbol Tables: Efficient field name canonicalization for improved memory usage and performance
  • Non-blocking Support: Async parsing capabilities for high-performance applications

Capabilities

Factory and Configuration

Central factory class for creating JSON processors with comprehensive configuration options including features, constraints, and buffer management.

public class JsonFactory extends TokenStreamFactory implements java.io.Serializable {
    public JsonParser createParser(String content) throws IOException;
    public JsonParser createParser(InputStream in) throws IOException;
    public JsonParser createParser(Reader r) throws IOException;
    public JsonParser createParser(byte[] data) throws IOException;
    public JsonParser createParser(File f) throws IOException;
    
    public JsonGenerator createGenerator(OutputStream out) throws IOException;
    public JsonGenerator createGenerator(Writer w) throws IOException;
    public JsonGenerator createGenerator(File f, JsonEncoding enc) throws IOException;
}

public static class JsonFactoryBuilder extends TSFBuilder<JsonFactory, JsonFactoryBuilder> {
    public JsonFactoryBuilder enable(JsonFactory.Feature f);
    public JsonFactoryBuilder disable(JsonFactory.Feature f);
    public JsonFactoryBuilder streamReadConstraints(StreamReadConstraints src);
    public JsonFactoryBuilder streamWriteConstraints(StreamWriteConstraints swc);
    public JsonFactory build();
}

Factory and Configuration

JSON Parsing

Streaming JSON parser for token-based processing with support for all JSON data types, numeric coercion, and configurable parsing features.

public abstract class JsonParser implements Closeable, Versioned {
    public abstract JsonToken nextToken() throws IOException;
    public abstract JsonToken getCurrentToken();
    public abstract String getCurrentName() throws IOException;
    
    public abstract String getText() throws IOException;
    public abstract String getValueAsString() throws IOException;
    public abstract int getValueAsInt() throws IOException;
    public abstract long getValueAsLong() throws IOException;
    public abstract double getValueAsDouble() throws IOException;
    public abstract boolean getValueAsBoolean() throws IOException;
    
    public abstract BigInteger getBigIntegerValue() throws IOException;
    public abstract BigDecimal getDecimalValue() throws IOException;
    public abstract NumberType getNumberType() throws IOException;
}

public enum JsonToken {
    NOT_AVAILABLE, START_OBJECT, END_OBJECT, START_ARRAY, END_ARRAY,
    FIELD_NAME, VALUE_STRING, VALUE_NUMBER_INT, VALUE_NUMBER_FLOAT,
    VALUE_TRUE, VALUE_FALSE, VALUE_NULL
}

JSON Parsing

JSON Generation

Streaming JSON generator for writing JSON content with support for all JSON data types, pretty printing, and configurable output features.

public abstract class JsonGenerator implements Closeable, Flushable, Versioned {
    public abstract void writeStartObject() throws IOException;
    public abstract void writeEndObject() throws IOException;
    public abstract void writeStartArray() throws IOException;
    public abstract void writeEndArray() throws IOException;
    
    public abstract void writeFieldName(String name) throws IOException;
    public abstract void writeString(String text) throws IOException;
    public abstract void writeNumber(int i) throws IOException;
    public abstract void writeNumber(long l) throws IOException;
    public abstract void writeNumber(double d) throws IOException;
    public abstract void writeNumber(BigDecimal dec) throws IOException;
    public abstract void writeBoolean(boolean state) throws IOException;
    public abstract void writeNull() throws IOException;
    
    public void writeStringField(String fieldName, String value) throws IOException;
    public void writeNumberField(String fieldName, int value) throws IOException;
    public void writeBooleanField(String fieldName, boolean value) throws IOException;
}

JSON Generation

Features and Configuration

Comprehensive feature system for configuring parsing and generation behavior, including JSON-specific features and format-agnostic capabilities.

public enum StreamReadFeature implements JacksonFeature {
    AUTO_CLOSE_SOURCE, STRICT_DUPLICATE_DETECTION, IGNORE_UNDEFINED,
    INCLUDE_SOURCE_IN_LOCATION, USE_FAST_DOUBLE_PARSER, USE_FAST_BIG_NUMBER_PARSER
}

public enum StreamWriteFeature implements JacksonFeature {
    AUTO_CLOSE_TARGET, AUTO_CLOSE_JSON_CONTENT, FLUSH_PASSED_TO_STREAM,
    WRITE_BIGDECIMAL_AS_PLAIN, STRICT_DUPLICATE_DETECTION, IGNORE_UNKNOWN
}

public final class StreamReadConstraints implements Serializable {
    public static Builder builder();
    public int getMaxStringLength();
    public int getMaxNumberLength();
    public int getMaxNestingDepth();
    public long getMaxDocumentLength();
    public int getMaxNameLength();
}

Features and Configuration

Exception Handling

Comprehensive exception hierarchy for JSON processing errors with detailed error reporting and location information.

public abstract class JacksonException extends IOException {
    public abstract JsonLocation getLocation();
    public abstract String getOriginalMessage();
    public abstract Object getProcessor();
}

public abstract class JsonProcessingException extends JacksonException {
    protected JsonProcessingException(String msg);
    protected JsonProcessingException(String msg, JsonLocation loc);
    protected JsonProcessingException(String msg, Throwable rootCause);
}

public class JsonParseException extends JsonProcessingException {
    public JsonParseException(JsonParser p, String msg);
    public JsonParseException(JsonParser p, String msg, Throwable rootCause);
}

Exception Handling

Utilities and Advanced Features

Utility classes for buffer management, pretty printing, filtering, and advanced processing patterns including parser delegation and generator decoration.

public class JsonParserDelegate extends JsonParser {
    protected JsonParser delegate;
    public JsonParserDelegate(JsonParser d);
    public JsonParser getDelegate();
}

public class JsonGeneratorDelegate extends JsonGenerator {
    protected JsonGenerator delegate;
    public JsonGeneratorDelegate(JsonGenerator d);
    public JsonGenerator getDelegate();
}

public interface PrettyPrinter {
    void writeRootValueSeparator(JsonGenerator gen) throws IOException;
    void writeStartObject(JsonGenerator gen) throws IOException;
    void writeObjectFieldValueSeparator(JsonGenerator gen) throws IOException;
    void writeEndObject(JsonGenerator gen, int nrOfEntries) throws IOException;
}

Utilities and Advanced Features

Types

Core Types

public class JsonLocation implements Serializable {
    public static final JsonLocation NA;
    public Object getSourceRef();
    public int getLineNr();
    public int getColumnNr();
    public long getCharOffset();
    public long getByteOffset();
}

public abstract class JsonStreamContext {
    public abstract JsonStreamContext getParent();
    public abstract String getCurrentName();
    public abstract boolean inObject();
    public abstract boolean inArray();
    public abstract boolean inRoot();
    public abstract int getCurrentIndex();
    public abstract int getEntryCount();
}

public enum JsonEncoding {
    UTF8("UTF-8"), UTF16_BE("UTF-16BE"), UTF16_LE("UTF-16LE"), UTF32_BE("UTF-32BE"), UTF32_LE("UTF-32LE");
    public String getJavaName();
    public boolean isBigEndian();
}

Number Handling

public enum NumberType {
    INT, LONG, BIG_INTEGER, FLOAT, DOUBLE, BIG_DECIMAL
}

public enum NumberTypeFP {
    UNKNOWN, FLOAT32, FLOAT64, BIG_DECIMAL
}

Advanced Types

public class JsonPointer implements Serializable {
    public static final JsonPointer empty();
    public static JsonPointer compile(String input) throws IllegalArgumentException;
    public static JsonPointer valueOf(String input);
    public JsonPointer append(JsonPointer tail);
    public String toString();
    public boolean matches();
}

public abstract class TypeReference<T> {
    protected TypeReference();
    public Type getType();
}