# ISerializable

<a id="iserializable"></a>

# ISerializable

```cpp
#include <icy/json/iserializable.h>

class ISerializable
```

[Defined in src/json/include/icy/json/iserializable.h:24](https://github.com/auscaster/icey/blob/main/src/json/include/icy/json/iserializable.h#L24)

> **Subclassed by:** [`Scheduler`](https://auscaster.com/icey/docs/api-reference/icy-sched-Scheduler.md#scheduler), [`Task`](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#task-5), [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1)

Abstract interface for JSON-serializable objects.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`~ISerializable`](#iserializable-1) `virtual` | Defaulted destructor. |
| `void` | [`serialize`](#serialize-1) `virtual` | Serializes this object's state into `root`. |
| `void` | [`deserialize`](#deserialize-1) `virtual` | Populates this object's state from `root`. |

---

<a id="iserializable-1"></a>

### ~ISerializable

`virtual`

```cpp
virtual ~ISerializable() = default
```

[Defined in src/json/include/icy/json/iserializable.h:27](https://github.com/auscaster/icey/blob/main/src/json/include/icy/json/iserializable.h#L27)

Defaulted destructor.

---

<a id="serialize-1"></a>

### serialize

`virtual`

```cpp
virtual void serialize(json::Value & root)
```

[Defined in src/json/include/icy/json/iserializable.h:31](https://github.com/auscaster/icey/blob/main/src/json/include/icy/json/iserializable.h#L31)

Serializes this object's state into `root`.

#### Reimplemented by

- [`Scheduler::serialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Scheduler.md#serialize-3)
- [`Task::serialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#serialize-4)
- [`Trigger::serialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#serialize-5)
- [`IntervalTrigger::serialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-IntervalTrigger.md#serialize-2)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `root` | [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON object to populate. |

---

<a id="deserialize-1"></a>

### deserialize

`virtual`

```cpp
virtual void deserialize(json::Value & root)
```

[Defined in src/json/include/icy/json/iserializable.h:35](https://github.com/auscaster/icey/blob/main/src/json/include/icy/json/iserializable.h#L35)

Populates this object's state from `root`.

#### Reimplemented by

- [`Scheduler::deserialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Scheduler.md#deserialize-3)
- [`Task::deserialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#deserialize-4)
- [`Trigger::deserialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#deserialize-5)
- [`IntervalTrigger::deserialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-IntervalTrigger.md#deserialize-2)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `root` | [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON object previously produced by [serialize()](#serialize-1). |
