package com.fasterxml.jackson.core; /** * Marker interface used to denote 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 <code>JsonNode</code> * base class in <code>mapper</code> package. *<p> * Note that in Jackson 1.x <code>JsonNode</code> 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 <code>core</code> package should * be minimized. */ public interface TreeNode { /* /********************************************************** /* Minimal introspection methods /********************************************************** */ /** * Method that can be used for efficient type detection * 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(); }