'bar']; } } class TestJsonableObject implements Jsonable { public function toJson($options = 0) { return '{"foo":"bar"}'; } } class TestJsonSerializeObject implements JsonSerializable { public function jsonSerialize(): array { return ['foo' => 'bar']; } } class TestJsonSerializeWithScalarValueObject implements JsonSerializable { public function jsonSerialize(): string { return 'foo'; } } class TestTraversableAndJsonSerializableObject implements IteratorAggregate, JsonSerializable { public $items; public function __construct($items = []) { $this->items = $items; } public function getIterator(): Traversable { return new ArrayIterator($this->items); } public function jsonSerialize(): array { return json_decode(json_encode($this->items), true); } }