Объект цены имеет три свойства,Как настроить вывод объекта во время json_encode?
/** @var float */
public $amount = 0.0;
/** @var string */
public $currency = '';
/**
* @var \DateTime
*/
public $dueDate;
При сериализации этого объекта JSON с помощью Symfony2 Symfony\Component\HttpFoundation\JsonResponse
, он будет выглядеть следующим образом:
{
"price": {
"amount": 235,
"currency": "EUR",
"dueDate": {
"date": "2015-10-25 00:00:00.000000",
"timezone": "UTC",
"timezone_type": 3
}
}
}
Я хочу \ DateTime быть отформатирован как просто строка:
"dueDate": "2015-10-22 00:00:00.000000"
Как получить это сделать, это не масштаб вопроса, так как я в настоящее время обрабатывать этот случай в кон объекта structor:
/**
* Price constructor.
* @param float $amount
* @param string $currency
* @param \DateTime|null $dueDate
*/
public function __construct($amount = 0.0, $currency = "", $dueDate)
{
$this->amount = $amount;
$this->currency = $currency;
$this->dueDate = $dueDate;;
if ($dueDate instanceof \DateTime) {
$this->dueDate = $dueDate->format(\DateTime::ATOM);
}
}
пока он не чувствовать совершенно права, и мне интересно, если я мог бы настроить процесс сериализации по-разному, в том смысле, вместо кодирования моего представления, изменить способ объекта сериализации ,
Рассуждение состоит в том, чтобы все объекты \DateTime
были сериализованы, которые сериализованы везде, где в объекте, подлежащем сериализации, определенным образом, без дублирующей логики. (Я предполагаю, что я мог бы поставить обращение в абстрактном классе или где-то похожи, но простирающиеся объекты также имеет свои подводные камни)
В основном:
Есть ли поймать onserialize «событие», где я могу добавить некоторую логику, или мне лучше смотреть в JMSSerializer?
только ваш класс реализует класс ['JsonSerializable'] (http://php.net/manual/en/class.jsonserializable.php) и создает метод с именем [' jsonSerialize'] (http://php.net/manual/en/jsonserializable.jsonserialize.php), который возвращает массив данных, которые вы хотите сериализовать с помощью '' json_encode() ') (http://php.net/manual/en/function.json -encode.php) –