org.codehaus.jackson.node
Class BaseJsonNode

java.lang.Object
  extended by org.codehaus.jackson.JsonNode
      extended by org.codehaus.jackson.node.BaseJsonNode
All Implemented Interfaces:
Iterable<JsonNode>, JsonSerializable, JsonSerializableWithType
Direct Known Subclasses:
ContainerNode, MissingNode, ValueNode

public abstract class BaseJsonNode
extends JsonNode
implements JsonSerializableWithType

Abstract base class common to all standard JsonNode implementations. The main addition here is that we declare that sub-classes must implement JsonSerializableWithType. This simplifies object mapping aspects a bit, as no external serializers are needed.


Field Summary
 
Fields inherited from class org.codehaus.jackson.JsonNode
NO_NODES, NO_STRINGS
 
Constructor Summary
protected BaseJsonNode()
           
 
Method Summary
abstract  JsonToken asToken()
          Method that can be used for efficient type detection when using stream abstraction for traversing nodes.
 ObjectNode findParent(String fieldName)
          Method for finding a JSON Object that contains specified field, within this node or its descendants.
 List<JsonNode> findParents(String fieldName, List<JsonNode> foundSoFar)
           
 JsonNode findPath(String fieldName)
          Method similar to JsonNode.findValue(java.lang.String), but that will return a "missing node" instead of null if no field is found.
 JsonNode findValue(String fieldName)
          Method for finding a JSON Object field with specified name in this node or its child nodes, and returning value it has.
 List<JsonNode> findValues(String fieldName, List<JsonNode> foundSoFar)
           
 List<String> findValuesAsText(String fieldName, List<String> foundSoFar)
           
 JsonParser.NumberType getNumberType()
          If this node is a numeric type (as per JsonNode.isNumber()), returns native type that node uses to store the numeric value.
abstract  void serialize(JsonGenerator jgen, SerializerProvider provider)
          Method called to serialize node instances using given generator.
 void serializeWithType(JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer)
          Since JSON node typing is only based on JSON values, there is no need to include type information.
 JsonParser traverse()
          Method for constructing a JsonParser instance for iterating over contents of the tree that this node is root of.
 void writeTo(JsonGenerator jgen)
           Note: this method is deprecated, given that we want to use the standard serialization interface.
 
Methods inherited from class org.codehaus.jackson.JsonNode
equals, findParents, findValues, findValuesAsText, get, get, getBigIntegerValue, getBinaryValue, getBooleanValue, getDecimalValue, getDoubleValue, getElements, getElementValue, getFieldNames, getFieldValue, getIntValue, getLongValue, getNumberValue, getPath, getPath, getTextValue, getValueAsBoolean, getValueAsBoolean, getValueAsDouble, getValueAsDouble, getValueAsInt, getValueAsInt, getValueAsLong, getValueAsLong, getValueAsText, has, has, isArray, isBigDecimal, isBigInteger, isBinary, isBoolean, isContainerNode, isDouble, isFloatingPointNumber, isInt, isIntegralNumber, isLong, isMissingNode, isNull, isNumber, isObject, isPojo, isTextual, isValueNode, iterator, path, path, size, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BaseJsonNode

protected BaseJsonNode()
Method Detail

findValue

public JsonNode findValue(String fieldName)
Description copied from class: JsonNode
Method for finding a JSON Object field with specified name in this node or its child nodes, and returning value it has. If no matching field is found in this node or its descendants, returns null.

Specified by:
findValue in class JsonNode
Parameters:
fieldName - Name of field to look for
Returns:
Value of first matching node found, if any; null if none

findPath

public final JsonNode findPath(String fieldName)
Description copied from class: JsonNode
Method similar to JsonNode.findValue(java.lang.String), but that will return a "missing node" instead of null if no field is found. Missing node is a specific kind of node for which JsonNode.isMissingNode() returns true; and all value access methods return empty or missing value.

Specified by:
findPath in class JsonNode
Parameters:
fieldName - Name of field to look for
Returns:
Value of first matching node found; or if not found, a "missing node" (non-null instance that has no value)

findParent

public ObjectNode findParent(String fieldName)
Description copied from class: JsonNode
Method for finding a JSON Object that contains specified field, within this node or its descendants. If no matching field is found in this node or its descendants, returns null.

Specified by:
findParent in class JsonNode
Parameters:
fieldName - Name of field to look for
Returns:
Value of first matching node found, if any; null if none

findValues

public List<JsonNode> findValues(String fieldName,
                                 List<JsonNode> foundSoFar)
Specified by:
findValues in class JsonNode

findValuesAsText

public List<String> findValuesAsText(String fieldName,
                                     List<String> foundSoFar)
Specified by:
findValuesAsText in class JsonNode

findParents

public List<JsonNode> findParents(String fieldName,
                                  List<JsonNode> foundSoFar)
Specified by:
findParents in class JsonNode

traverse

public JsonParser traverse()
Description copied from class: JsonNode
Method for constructing a JsonParser instance for iterating over contents of the tree that this node is root of. Functionally equivalent to first serializing tree using JsonNode.writeTo(org.codehaus.jackson.JsonGenerator) and then re-parsing but much more efficient.

Specified by:
traverse in class JsonNode

asToken

public abstract JsonToken asToken()
Method that can be used for efficient type detection when using stream abstraction for traversing nodes. Will return the first JsonToken that equivalent stream event would produce (for most nodes there is just one token but for structured/container types multiple)

Specified by:
asToken in class JsonNode
Since:
1.3

getNumberType

public JsonParser.NumberType getNumberType()
Description copied from class: JsonNode
If this node is a numeric type (as per JsonNode.isNumber()), returns native type that node uses to store the numeric value.

Specified by:
getNumberType in class JsonNode
Since:
1.3

serialize

public abstract void serialize(JsonGenerator jgen,
                               SerializerProvider provider)
                        throws IOException,
                               JsonProcessingException
Method called to serialize node instances using given generator.

Specified by:
serialize in interface JsonSerializable
Throws:
IOException
JsonProcessingException

serializeWithType

public void serializeWithType(JsonGenerator jgen,
                              SerializerProvider provider,
                              TypeSerializer typeSer)
                       throws IOException,
                              JsonProcessingException
Since JSON node typing is only based on JSON values, there is no need to include type information. So, serialize the same way as when no typing is enabled.

Specified by:
serializeWithType in interface JsonSerializableWithType
Throws:
IOException
JsonProcessingException

writeTo

public final void writeTo(JsonGenerator jgen)
                   throws IOException,
                          JsonGenerationException

Note: this method is deprecated, given that we want to use the standard serialization interface.

Specified by:
writeTo in class JsonNode
Throws:
IOException
JsonGenerationException