abk.json
Class AJsonElement

java.lang.Object
  extended by abk.json.AJsonElement
Direct Known Subclasses:
AJsonArray, AJsonBean, AJsonKeyword, AJsonNumber, AJsonString

public abstract class AJsonElement
extends Object

Las clases que heredan de AJsonElement están pensadas para convertirse en una cadena JSON válida.

El estándar JSON exige que las propiedades se entrecomillen mediante comillas dobles. Y permite una serie de valores no entrecomillados: null, true, false.

Más detalles en el RFC-4627.


Field Summary
(package private) static char DOT
          '.'
(package private) static String FALSE
          "false"
(package private) static String NULL
          "null"
(package private) static char SEP
          ','
(package private) static String TRUE
          "true"
(package private) static String UNDEFINED
          "undefined"
 
Constructor Summary
protected AJsonElement()
          Constructor por defecto, únicamente para las clases descendientes.
 
Method Summary
 byte byteValue()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como byte.
 double doubleValue()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como double.
 float floatValue()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como float.
protected static StringBuilder getBasePath(CharSequence owner)
          Crea y devuelve un StringBuilder con la ruta base para concatenar los nombres de las propiedades anidadas.
 Boolean getBoolean()
          Devuelve el valor de un elemento que es una instancia AJsonKeyword.TRUE o AJsonKeyword.FALSE como Boolean.
protected static AJsonString getMapRef(Map<Object,String> map, Object bean)
          Devuelve una cadena que representa la referencia de un bean que ya está en un mapa de objetos procesados.
 Number getNumber()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como Number.
 String getString()
          Devuelve el valor de un elemento que es de tipo AJsonString.
 int intValue()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como int.
 boolean isFalse()
          Comprueba si el objeto es AJsonKeyword.FALSE.
protected static boolean isMappeable(Class<?> type)
           
 boolean isNull()
          Comprueba si el objeto es AJsonKeyword.NULL.
 boolean isTrue()
          Comprueba si el objeto es AJsonKeyword.TRUE.
static AJsonElement jsonify(Object obj)
          Parsea un objeto para devolver una representación JSON del mismo.
protected static AJsonElement jsonifySimple(Object obj, Map<Object,String> map, String owner)
          Parsea un objeto simple para devolver una representación JSON del mismo.
 long longValue()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como long.
private  ClassCastException newClassCastException()
           
 short shortValue()
          Devuelve el valor de un elemento que es de tipo AJsonNumber como short.
protected static void stringify(AJsonElement el, Appendable sb)
          Realiza la operación de conversión a String de forma segura frente a elementos null.
abstract  void stringify(Appendable ap)
          Se invoca para que escriba el objeto en el stream que se le pasa.
 void stringify(StringBuilder sb)
          Se invoca para añadir la representacion JSON del objeto al StringBuilder que se le pasa.
 String toString()
          Invoca a stringify(StringBuilder) con una instancia nueva de StringBuilder y devuelve el resultado de la operación como un String.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NULL

static final String NULL
"null"

See Also:
Constant Field Values

TRUE

static final String TRUE
"true"

See Also:
Constant Field Values

FALSE

static final String FALSE
"false"

See Also:
Constant Field Values

UNDEFINED

static final String UNDEFINED
"undefined"

See Also:
Constant Field Values

SEP

static final char SEP
','

See Also:
Constant Field Values

DOT

static final char DOT
'.'

See Also:
Constant Field Values
Constructor Detail

AJsonElement

protected AJsonElement()
Constructor por defecto, únicamente para las clases descendientes.

Method Detail

stringify

public void stringify(StringBuilder sb)
Se invoca para añadir la representacion JSON del objeto al StringBuilder que se le pasa.

Parameters:
sb - Objeto donde añadir la representación JSON del objeto.
Throws:
UndeclaredThrowableException - si se produce algún error.

stringify

protected static final void stringify(AJsonElement el,
                                      Appendable sb)
                               throws IOException
Realiza la operación de conversión a String de forma segura frente a elementos null.

Parameters:
el - Elemento JSON a convertir. Si es null se utiliza "null".
sb - Objeto Appendable al que se añade el elemento.
Throws:
IOException - si el sb lanza un error al añadir el texto.

stringify

public abstract void stringify(Appendable ap)
                        throws IOException
Se invoca para que escriba el objeto en el stream que se le pasa. Se debe sobrecargar por las clases descendientes.

Parameters:
ap - Objeto sobre el que se escribe el texto.
Throws:
IOException - si se produce un error de la capa de transporte.

toString

public String toString()
Invoca a stringify(StringBuilder) con una instancia nueva de StringBuilder y devuelve el resultado de la operación como un String.

Overrides:
toString in class Object
Returns:
Devuelve una cadena JSON representando el objeto.

jsonify

public static final AJsonElement jsonify(Object obj)
Parsea un objeto para devolver una representación JSON del mismo. Primero se trata de parsear con jsonifySimple(java.lang.Object, java.util.Map, java.lang.String), y si devuelve null utiliza AJsonBean.valueOf(Object).

Parameters:
obj - Objeto a parsear.
Returns:
Devuelve el objeto JsonElement resultante de la conversión.
Throws:
IllegalArgumentException - si obj es de un tipo distinto a los previstos.

jsonifySimple

protected static final AJsonElement jsonifySimple(Object obj,
                                                  Map<Object,String> map,
                                                  String owner)
Parsea un objeto simple para devolver una representación JSON del mismo. El parseo aplica las siguientes reglas:

Parameters:
obj - Objeto a parsear.
map - Mapa de objetos ya parseados.
owner - Ruta del objeto propietario del objeto.
Returns:
Devuelve el objeto AJsonElement resultante del parseo, null si el objeto no es sencillo.
Throws:
IllegalArgumentException - si el objeto es una instancia de Number no admitida, conforme a AJsonNumber.valueOf(Number).

getMapRef

protected static final AJsonString getMapRef(Map<Object,String> map,
                                             Object bean)
Devuelve una cadena que representa la referencia de un bean que ya está en un mapa de objetos procesados.

Parameters:
map - Mapa con los objetos Java Bean parseados, dentro del cual estamos buscando una referencia al bean recibido.
bean - Objeto a buscar en el mapa de objetos pareseados. Si se pasa null siempre se obtiene null de vuelta.
Returns:
Devuelve null si bean no está en el mapa de beans parseados, o en otro caso, un AJsonString con una cadena como "#.path.to.ref", donde "path.to.ref" es una representación del conjunto de propiedades anidadas que hay que recorrer para llegar a la referencia de bean registrada en el mapa map.

isMappeable

protected static final boolean isMappeable(Class<?> type)

getBasePath

protected static final StringBuilder getBasePath(CharSequence owner)
Crea y devuelve un StringBuilder con la ruta base para concatenar los nombres de las propiedades anidadas.

Parameters:
owner - Nombre de la propiedad base.
Returns:
Si owner es algo como "path.to" devuelve un StringBuilder que contiene "path.to.". Si owner es nulo o vacío el contenido del objeto devuelto es una cadena vacía.

isTrue

public boolean isTrue()
Comprueba si el objeto es AJsonKeyword.TRUE.

Returns:
true si el elemento en esa posición es AJsonKeyword.TRUE, o false en otro caso.
See Also:
getBoolean()

isFalse

public boolean isFalse()
Comprueba si el objeto es AJsonKeyword.FALSE.

Returns:
true si el elemento en esa posición es AJsonKeyword.FALSE, o false en otro caso.
See Also:
getBoolean()

isNull

public boolean isNull()
Comprueba si el objeto es AJsonKeyword.NULL.

Returns:
true si el elemento en esa posición es AJsonKeyword.NULL, o false en otro caso.

newClassCastException

private ClassCastException newClassCastException()

getString

public String getString()
Devuelve el valor de un elemento que es de tipo AJsonString. A diferencia de toString(), retorna la cadena tal como se representa en Java.

Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el elemento no es un AJsonString.
See Also:
AJsonString.getString()

getNumber

public Number getNumber()
Devuelve el valor de un elemento que es de tipo AJsonNumber como Number.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber.
Throws:
ClassCastException - si el elemento no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()

getBoolean

public Boolean getBoolean()
Devuelve el valor de un elemento que es una instancia AJsonKeyword.TRUE o AJsonKeyword.FALSE como Boolean.

Returns:
Objeto Boolean que representa el valor de una instancia AJsonKeyword.TRUE o AJsonKeyword.FALSE.
Throws:
ClassCastException - si el elemento no es AJsonKeyword.TRUE o AJsonKeyword.FALSE.
See Also:
isTrue(), isFalse()

intValue

public int intValue()
Devuelve el valor de un elemento que es de tipo AJsonNumber como int.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber,
Throws:
ClassCastException - si el elemento en esa posición no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()

longValue

public long longValue()
Devuelve el valor de un elemento que es de tipo AJsonNumber como long.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber,
Throws:
ClassCastException - si el elemento en esa posición no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()

shortValue

public short shortValue()
Devuelve el valor de un elemento que es de tipo AJsonNumber como short.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber,
Throws:
ClassCastException - si el elemento en esa posición no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()

byteValue

public byte byteValue()
Devuelve el valor de un elemento que es de tipo AJsonNumber como byte.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber,
Throws:
ClassCastException - si el elemento en esa posición no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()

doubleValue

public double doubleValue()
Devuelve el valor de un elemento que es de tipo AJsonNumber como double.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber,
Throws:
ClassCastException - si el elemento en esa posición no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()

floatValue

public float floatValue()
Devuelve el valor de un elemento que es de tipo AJsonNumber como float.

Returns:
El número contenido en esa posición si es una instancia de AJsonNumber,
Throws:
ClassCastException - si el elemento en esa posición no es un AJsonNumber.
See Also:
AJsonNumber.getNumber()


Copyright © 2024. All rights reserved.