# WddxSerializer Object

The WddxSerializer object includes functions that serialize any JavaScript data structure.

The only function that developers typically call is serialize.

## serialize

Creates a WDDX packet for a passed WddxRecordset instance.

### Syntax

    object.serialize( rootobj )

##### object

Instance name of the WddxSerializer object.

##### rootobj

JavaScript data structure to be serialized.

### Return value

String. Returns the serialized WDDX packet if the function succeeds and a null value if an error occurs.

### Usage

Call this function to serialize the data in a WddxRecordset instance.

### Example

This example illustrates a JavaScript function that you can call to serialize a WddxRecordset instance. The function copies serialized data to a form field for display:

    function serializeData(data, formField)
      {
        wddxSerializer = new WddxSerializer();
        wddxPacket = wddxSerializer.serialize(data);
        if (wddxPacket != null)
        {
          formField.value = wddxPacket;
        }
        else
        {
          alert("Couldn't serialize data");
        }
      }

## serializeVariable

Serializes a property of a structure. If an object is not a string, number, array, Boolean, or a date, WddxSerializer treats it as a structure.

### Syntax

    object.serializeVariable( name, obj )

##### object

Instance name of the WddxSerializer object.

##### name

Property to be serialized.

##### obj

Instance name of the value to be serialized.

### Return value

Boolean. Returns True if serialization was successful and False if an error occurs.

### Usage

Internal. You do not typically call this function.

### Example

This example is from the WddxSerializer serializeValue function:

    ...
    // Some generic object; treat it as a structure
          this.write("<struct>");
          for (prop in obj)
          {
            bSuccess = this.serializeVariable(prop, obj[prop]);
            if (! bSuccess)
            {
              break;
            }
          }
          this.write("</struct>");
    ...

## serializeValue

Recursively serializes all eligible data in a passed instance. Data that can be serialized includes:

- String
- Number
- Boolean
- Date
- Array
- Recordset
- Any JavaScript object

This function serialize null values as empty strings.

### Syntax

    object.serializeValue( obj )

##### object

Instance name of the WddxSerializer object.

##### obj

Instance name of the WddxRecordset object to be serialized.

### Return value

Boolean. Returns True if obj was serialized successfully and False if an error occurs.

### Usage

Internal. You do not typically call this function.

### Example

This example is from the WddxSerializer serialize function:

    ...
    this.wddxPacket = "";
    this.write("<wddxPacket version='1.0'><header/><data>");
    bSuccess = this.serializeValue(rootObj);
    this.write("</data></wddxPacket>");

    if (bSuccess)
    {
        return this.wddxPacket;
    }
    else
    {
        return null;
    }
    ...

## write

Appends data to the serialized data stream.

### Syntax

    object.write( str )

##### object

Instance name of the WddxSerializer object.

##### str

String to be copied to the serialized data stream.

### Return value

String. Returns the updated serialized data stream.

### Usage

Internal. You do not typically call this function.

### Example

This example is from the WddxSerializer serializeValue function:

    ...
    else if (typeof(obj) == "number")
    {
      // Number value
      this.write("<number>" + obj + "</number>");
    }
    else if (typeof(obj) == "boolean")
    {
      // Boolean value
      this.write("<boolean value='" + obj + "'/>");
    }
    ...