(bool) enable/disable the removing of * null values (default is true) * * @param array $data */ public static function serialize($data, array $options = []): string { $result = ''; foreach ($data as $row) { if (empty($row)) { $result .= "{}\n"; continue; } $result .= JsonSerializer::serialize($row, $options) . "\n"; } return $result; } /** * The available options are: * 'type' => (string) specify if the array result should contain object * or array (default is array) * * @inheritdoc */ public static function unserialize(string $data, array $options = []) { $array = explode(strpos($data, "\r\n") !== false ? "\r\n" : "\n", $data); $result = []; foreach ($array as $json) { if (empty($json)) { continue; } try { $result[] = JsonSerializer::unserialize($json, $options); } catch (JsonException $e) { throw new InvalidJsonException(sprintf( "Not a valid NDJson: %s", $e->getMessage() )); } } $type = $options['type'] ?? 'array'; return $type === 'array' ? $result : new ArrayObject($result); } }