com.fitbur.fasterxml.jackson.core.TreeNode Maven / Gradle / Ivy
package com.fitbur.fasterxml.jackson.core;
/**
* Marker interface used to com.fitburnote JSON Tree nodes, as far as
* the core package knows them (which is very little): mostly
* needed to allow {@link ObjectCodec} to have some level
* of interoperability.
* All real functionality is within JsonNode
* base class in mapper
package.
*
* Note that in Jackson 1.x JsonNode
itself
* was part of core package: Jackson 2.x refactored this
* since conceptually Tree Model is part of mapper package,
* and so part visible to core
package should
* be minimized.
*/
public interface TreeNode
{
/*
/**********************************************************
/* Minimal introspection methods
/**********************************************************
*/
/**
* Method that can be used for efficient type com.fitburtection
* when using stream abstraction for traversing nodes.
* Will return the first {@link JsonToken} that equivalent
* stream event would produce (for most nodes there is just
* one token but for structured/container types multiple)
*/
JsonToken asToken();
/**
* If this node is a numeric type (as per {@link JsonToken#isNumeric}),
* returns native type that node uses to store the numeric value;
* otherwise returns null.
*
* @return Type of number contained, if any; or null if node does not
* contain numeric value.
*/
JsonParser.NumberType numberType();
/*
/**********************************************************
/* Public API: converting to/from Streaming API
/**********************************************************
*/
/**
* Method for constructing a {@link JsonParser} instance for
* iterating over contents of the tree that this node is root of.
* Functionally equivalent to first serializing tree using
* {@link ObjectCodec} and then re-parsing but
* more efficient.
*/
JsonParser traverse();
}