blob: de2e747aeb464a4af9fda427c84b402ca59df915 [file] [log] [blame]
package org.codehaus.jackson;
/**
* Interface that defines how Jackson package can interact with efficient
* pre-serialized or lazily-serialized and reused String representations.
* Typically implementations store possible serialized version(s) so that
* serialization of String can be done more efficiently, especially when
* used multiple times.
*
* @since 1.7 (1.6 introduced implementation, but interface extracted later)
*
* @see org.codehaus.jackson.io.SerializedString
*/
public interface SerializableString
{
/**
* Returns unquoted String that this object represents (and offers
* serialized forms for)
*/
public String getValue();
/**
* Returns length of the (unquoted) String as characters.
* Functionally equvalent to:
*<pre>
* getValue().length();
*</pre>
*/
public int charLength();
/**
* Returns JSON quoted form of the String, as character array. Result
* can be embedded as-is in textual JSON as property name or JSON String.
*/
public char[] asQuotedChars();
/**
* Returns UTF-8 encoded version of unquoted String.
* Functionally equivalent to (but more efficient than):
*<pre>
* getValue().getBytes("UTF-8");
*</pre>
*/
public byte[] asUnquotedUTF8();
/**
* Returns UTF-8 encoded version of JSON-quoted String.
* Functionally equivalent to (but more efficient than):
*<pre>
* new String(asQuotedChars()).getBytes("UTF-8");
*</pre>
*/
public byte[] asQuotedUTF8();
}