com.smartgwt.client.util
Class JSONEncoder

java.lang.Object
  extended by com.smartgwt.client.core.JsObject
      extended by com.smartgwt.client.core.DataClass
          extended by com.smartgwt.client.util.JSONEncoder

public class JSONEncoder
extends DataClass

Class for encoding objects as JSON strings.


Field Summary
 
Fields inherited from class com.smartgwt.client.core.JsObject
jsObj
 
Constructor Summary
JSONEncoder()
           
JSONEncoder(JavaScriptObject jsObj)
           
 
Method Summary
static JavaScriptObject decode(String stringToJs)
          Convert the passed string as Javascript
 String encode(BaseClass object)
          Serialize an object as a JSON string.
 String encode(DataClass object)
          Serialize an object as a JSON string.
 String encode(Object object)
          Serialize an object as a JSON string.
 String encodeDate(Date theDate)
          Encode a JavaScript Date value.
 String getCircularReferenceMarker()
          The string marker used to represent circular references.
 JSONCircularReferenceMode getCircularReferenceMode()
          What the JSONEncoder should do if it encounters a circular reference.
 JSONDateFormat getDateFormat()
          Format for encoding JavaScript Date values in JSON.
static JSONEncoder getOrCreateRef(JavaScriptObject jsObj)
           
 Boolean getPrettyPrint()
          Whether to add indentation to the returned JSON string.
 JSONInstanceSerializationMode getSerializeInstances()
          Controls the output of the JSONEncoder when instances of Smart GWT classes (eg a ListGrid) are included in the data to be serialized.
 Boolean getShowDebugOutput()
          If objects that cannot be serialized to JSON are encountered during serialization, show a placeholder rather than just omitting them.
 Boolean getSkipInternalProperties()
          If true, don't show Smart GWT internal properties when encoding and object.
 Boolean getStrictQuoting()
          Whether all property names should be quoted, or only those property names that are not valid identifiers or are JavaScript reserved words (such as "true").
 void setCircularReferenceMarker(String circularReferenceMarker)
          The string marker used to represent circular references.
 void setCircularReferenceMode(JSONCircularReferenceMode circularReferenceMode)
          What the JSONEncoder should do if it encounters a circular reference.
 void setDateFormat(JSONDateFormat dateFormat)
          Format for encoding JavaScript Date values in JSON.
 void setJavaScriptObject(JavaScriptObject jsObj)
           
 void setPrettyPrint(Boolean prettyPrint)
          Whether to add indentation to the returned JSON string.
 void setSerializeInstances(JSONInstanceSerializationMode serializeInstances)
          Controls the output of the JSONEncoder when instances of Smart GWT classes (eg a ListGrid) are included in the data to be serialized.
 void setShowDebugOutput(Boolean showDebugOutput)
          If objects that cannot be serialized to JSON are encountered during serialization, show a placeholder rather than just omitting them.
 void setSkipInternalProperties(Boolean skipInternalProperties)
          If true, don't show Smart GWT internal properties when encoding and object.
 void setStrictQuoting(Boolean strictQuoting)
          Whether all property names should be quoted, or only those property names that are not valid identifiers or are JavaScript reserved words (such as "true").
 
Methods inherited from class com.smartgwt.client.core.DataClass
doAddHandler, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsDoubleArray, getAttributeAsFloat, getAttributeAsInt, getAttributeAsIntArray, getAttributeAsJavaScriptObject, getAttributeAsLong, getAttributeAsMap, getAttributeAsObject, getAttributeAsRecord, getAttributeAsString, getAttributeAsStringArray, getAttributes, getHandlerCount, getJsObj, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute
 
Methods inherited from class com.smartgwt.client.core.JsObject
isCreated, setJsObj
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JSONEncoder

public JSONEncoder()

JSONEncoder

public JSONEncoder(JavaScriptObject jsObj)
Method Detail

getOrCreateRef

public static JSONEncoder getOrCreateRef(JavaScriptObject jsObj)

setJavaScriptObject

public void setJavaScriptObject(JavaScriptObject jsObj)

setCircularReferenceMarker

public void setCircularReferenceMarker(String circularReferenceMarker)
The string marker used to represent circular references. See circularReferenceMode.

Parameters:
circularReferenceMarker - . See String. Default value is "$$BACKREF$$"

getCircularReferenceMarker

public String getCircularReferenceMarker()
The string marker used to represent circular references. See circularReferenceMode.

Returns:
. See String

setCircularReferenceMode

public void setCircularReferenceMode(JSONCircularReferenceMode circularReferenceMode)
What the JSONEncoder should do if it encounters a circular reference.

Parameters:
circularReferenceMode - circularReferenceMode Default value is "path"

getCircularReferenceMode

public JSONCircularReferenceMode getCircularReferenceMode()
What the JSONEncoder should do if it encounters a circular reference.

Returns:
JSONCircularReferenceMode

setDateFormat

public void setDateFormat(JSONDateFormat dateFormat)
Format for encoding JavaScript Date values in JSON. See JSONDateFormat for valid options, or override JSONEncoder.encodeDate to do something custom.

Parameters:
dateFormat - dateFormat Default value is "xmlSchema"

getDateFormat

public JSONDateFormat getDateFormat()
Format for encoding JavaScript Date values in JSON. See JSONDateFormat for valid options, or override JSONEncoder.encodeDate to do something custom.

Returns:
JSONDateFormat

setPrettyPrint

public void setPrettyPrint(Boolean prettyPrint)
Whether to add indentation to the returned JSON string. This makes the returned JSON much easier to read but adds size. Note that when delivering JSON responses compressed, the size difference between prettyPrinted JSON and normal JSON is negligible.

Parameters:
prettyPrint - prettyPrint Default value is true

getPrettyPrint

public Boolean getPrettyPrint()
Whether to add indentation to the returned JSON string. This makes the returned JSON much easier to read but adds size. Note that when delivering JSON responses compressed, the size difference between prettyPrinted JSON and normal JSON is negligible.

Returns:
Boolean

setSerializeInstances

public void setSerializeInstances(JSONInstanceSerializationMode serializeInstances)
Controls the output of the JSONEncoder when instances of Smart GWT classes (eg a ListGrid) are included in the data to be serialized. See JSONInstanceSerializationMode.

Note that the JSONEncoder does not support a format that will recreate the instance if passed to decode() or eval().

Parameters:
serializeInstances - serializeInstances Default value is "long"

getSerializeInstances

public JSONInstanceSerializationMode getSerializeInstances()
Controls the output of the JSONEncoder when instances of Smart GWT classes (eg a ListGrid) are included in the data to be serialized. See JSONInstanceSerializationMode.

Note that the JSONEncoder does not support a format that will recreate the instance if passed to decode() or eval().

Returns:
JSONInstanceSerializationMode

setShowDebugOutput

public void setShowDebugOutput(Boolean showDebugOutput)
If objects that cannot be serialized to JSON are encountered during serialization, show a placeholder rather than just omitting them.

The resulting String will not be valid JSON and so cannot be decoded/eval()'d

Parameters:
showDebugOutput - showDebugOutput Default value is false

getShowDebugOutput

public Boolean getShowDebugOutput()
If objects that cannot be serialized to JSON are encountered during serialization, show a placeholder rather than just omitting them.

The resulting String will not be valid JSON and so cannot be decoded/eval()'d

Returns:
Boolean

setSkipInternalProperties

public void setSkipInternalProperties(Boolean skipInternalProperties)
If true, don't show Smart GWT internal properties when encoding and object.

Parameters:
skipInternalProperties - skipInternalProperties Default value is false

getSkipInternalProperties

public Boolean getSkipInternalProperties()
If true, don't show Smart GWT internal properties when encoding and object.

Returns:
Boolean

setStrictQuoting

public void setStrictQuoting(Boolean strictQuoting)
Whether all property names should be quoted, or only those property names that are not valid identifiers or are JavaScript reserved words (such as "true").

Encoding only where required produces slightly shorter, more readable output which is still compatible with JavaScript's eval():

  {
      someProp : "someValue",
      "true" : "otherValue",
      otherProp : "otherValue"
  }
  
.. but is not understood by many server-side JSON parser implementations.

Parameters:
strictQuoting - strictQuoting Default value is true

getStrictQuoting

public Boolean getStrictQuoting()
Whether all property names should be quoted, or only those property names that are not valid identifiers or are JavaScript reserved words (such as "true").

Encoding only where required produces slightly shorter, more readable output which is still compatible with JavaScript's eval():

  {
      someProp : "someValue",
      "true" : "otherValue",
      otherProp : "otherValue"
  }
  
.. but is not understood by many server-side JSON parser implementations.

Returns:
Boolean

encodeDate

public String encodeDate(Date theDate)
Encode a JavaScript Date value.

By default, follows the dateFormat setting. Override to do custom encoding.

Parameters:
theDate - JavaScript date object to be serialized
Returns:
value to be included in result. If this value is intended to appear as a String it should include quotes (")

encode

public String encode(Object object)
Serialize an object as a JSON string.

Because GWT does not support Java reflection, JSON encoding cannot discover the properties of an arbitrary Java POJO. The following objects are supported:

Note that using the String produced by this API with JSON.decode will not successfully preserve dates. Use JSONEncoder.setDateFormat "dateConstructor" to have dates round-trip properly.

Parameters:
object - object to serialize
Returns:
object encoded as a JSON String

encode

public String encode(DataClass object)
Serialize an object as a JSON string.

Because GWT does not support Java reflection, JSON encoding cannot discover the properties of an arbitrary Java POJO. The following objects are supported:

Note that using the String produced by this API with JSON.decode will not successfully preserve dates. Use JSONEncoder.setDateFormat "dateConstructor" to have dates round-trip properly.

Parameters:
object - object to serialize
Returns:
object encoded as a JSON String

encode

public String encode(BaseClass object)
Serialize an object as a JSON string.

Because GWT does not support Java reflection, JSON encoding cannot discover the properties of an arbitrary Java POJO. The following objects are supported:

Note that using the String produced by this API with JSON.decode will not successfully preserve dates. Use JSONEncoder.setDateFormat "dateConstructor" to have dates round-trip properly.

Parameters:
object - object to serialize
Returns:
object encoded as a JSON String

decode

public static JavaScriptObject decode(String stringToJs)
Convert the passed string as Javascript

Parameters:
stringToJs - the string to convert
Returns:
the JavaScriptObject upon evaluation