• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/engine/response/json.php
  • Класс: BitrixMainEngineResponseJson
  • Вызов: Json::processData
private function processData($data)
{
	if ($data instanceof JsonSerializable)
	{
		$data = $data->jsonSerialize();
	}
	elseif ($data instanceof ContractJsonable)
	{
		$data = $data->toJson($this->jsonEncodingOptions);
	}
	elseif ($data instanceof ContractArrayable)
	{
		$data = $data->toArray();
	}

	if ($data instanceof DateTime)
	{
		return date('c' , $data->getTimestamp());
	}

	if ($data instanceof MainTypeDate)
	{
		/** @see CRestUtil::ConvertDate */
		return date('c', makeTimeStamp($data, FORMAT_DATE) + date("Z"));
	}

	if ($data instanceof MainWebUri)
	{
		return $data->getUri();
	}

	if ($data instanceof MainUIPageNavigation)
	{
		return array(
			'currentPage' => $data->getCurrentPage(),
			'pageSize' => $data->getPageSize(),
			'recordCount' => $data->getRecordCount(),
		);
	}

	if (is_array($data) || $data instanceof Traversable)
	{
		foreach ($data as $key => $item)
		{
			$data[$key] = $this->processData($item);
		}
	}

	return $data;
}