com.fasterxml.jackson.core

## Class JsonPointer

- java.lang.Object
- - com.fasterxml.jackson.core.JsonPointer

    public class JsonPointer
    extends Object

Implementation of JSON Pointer specification. Pointer instances can be used to locate logical JSON nodes for things like tree traversal (see `TreeNode.at(com.fasterxml.jackson.core.JsonPointer)`). It may be used in future for filtering of streaming JSON content as well (not implemented yet for 2.3).

Instances are fully immutable and can be shared, cached.

Since:
  2.3
Author:
  Tatu Saloranta

### Property Summary

Properties
`boolean` `mayMatch`

### Field Summary

Fields
`protected String` `_asString` We will retain representation of the pointer, as a String, so that `toString()` should be as efficient as possible.
`protected int` `_matchingElementIndex`
`protected String` `_matchingPropertyName`
`protected JsonPointer` `_nextSegment` Reference to rest of the pointer beyond currently matching segment (if any); null if this pointer refers to a matching segment.
`protected static JsonPointer` `EMPTY` Marker instance used to represent segment that matches current node or position.

### Constructor Summary

Constructors
`protected` `JsonPointer()` Constructor used for creating "empty" instance, used to represent state that matches current node.
`protected` `JsonPointer(String fullString, String segment, JsonPointer next)` Constructor used for creating non-empty Segments

### Method Summary

Methods
`protected static JsonPointer` `_parseQuotedTail(String input, int i)` Method called to parse tail of pointer path, when a potentially escaped character has been seen.
`protected static JsonPointer` `_parseTail(String input)`
`static JsonPointer` `compile(String input)` Factory method that parses given input and construct matching pointer instance, if it represents a valid JSON Pointer: if not, a `IllegalArgumentException` is thrown.
`boolean` `equals(Object o)`
`int` `getMatchingIndex()`
`String` `getMatchingProperty()`
`int` `hashCode()`
`JsonPointer` `matchElement(int index)`
`boolean` `matches()`
`JsonPointer` `matchProperty(String name)`
`boolean` `mayMatchElement()`
`boolean` `mayMatchProperty()`
`JsonPointer` `tail()` Accessor for getting a "sub-pointer", instance where current segment has been removed and pointer includes rest of segments;
`String` `toString()`
`static JsonPointer` `valueOf(String input)` Alias for `compile(java.lang.String)`; added to make instances automatically deserializable by Jackson databind.

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Property Detail

#### mayMatch

### Field Detail

#### EMPTY

    protected static final JsonPointer EMPTY

Marker instance used to represent segment that matches current node or position.

#### _nextSegment

    protected final JsonPointer _nextSegment

Reference to rest of the pointer beyond currently matching segment (if any); null if this pointer refers to a matching segment.

#### _asString

    protected final String _asString

We will retain representation of the pointer, as a String, so that `toString()` should be as efficient as possible.

#### _matchingPropertyName

    protected final String _matchingPropertyName

#### _matchingElementIndex

    protected final int _matchingElementIndex

### Constructor Detail

#### JsonPointer

    protected JsonPointer()

Constructor used for creating "empty" instance, used to represent state that matches current node.

#### JsonPointer

    protected JsonPointer(String fullString,
               String segment,
               JsonPointer next)

Constructor used for creating non-empty Segments

### Method Detail

#### compile

    public static JsonPointer compile(String input)
                               throws IllegalArgumentException

Factory method that parses given input and construct matching pointer instance, if it represents a valid JSON Pointer: if not, a `IllegalArgumentException` is thrown.

Throws:
  `IllegalArgumentException` - Thrown if the input does not present a valid JSON Pointer expression: currently the only such expression is one that does NOT start with a slash ('/').

#### valueOf

    public static JsonPointer valueOf(String input)

Alias for `compile(java.lang.String)`; added to make instances automatically deserializable by Jackson databind.

#### matches

    public boolean matches()

#### getMatchingProperty

    public String getMatchingProperty()

#### getMatchingIndex

    public int getMatchingIndex()

#### mayMatchProperty

    public boolean mayMatchProperty()

#### mayMatchElement

    public boolean mayMatchElement()

#### matchProperty

    public JsonPointer matchProperty(String name)

#### matchElement

    public JsonPointer matchElement(int index)

#### tail

    public JsonPointer tail()

Accessor for getting a "sub-pointer", instance where current segment has been removed and pointer includes rest of segments;

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### equals

    public boolean equals(Object o)

Overrides:
  `equals` in class `Object`

#### _parseTail

    protected static JsonPointer _parseTail(String input)

#### _parseQuotedTail

    protected static JsonPointer _parseQuotedTail(String input,
                               int i)

Method called to parse tail of pointer path, when a potentially escaped character has been seen.

Parameters:
  `input` - Full input for the tail being parsed
  `i` - Offset to character after tilde