Est-il possible de modifier la sortie de json_encode(['date' => $dateTimeObj])
?Modifier la sortie de DateTime dans json_encode
Maintenant, il imprime
{
"date": {
"date": "2016-10-27 11:23:52.000000",
"timezone_type": 3,
"timezone": "Europe/Paris"
}
}
Je voudrais avoir une sortie comme ce
{
"date": "2016-10-27T11:23:52+00:00"
}
Ma première idée était de créer ma propre classe DateTime qui sera étend DateTime et passer outre jsonSerialize, mais DateTime-t pas implémenter l'interface JsonSerializable et __toString n'a pas aidé aussi.
J'utilise PHP 7.0.8.
je voulais dire quelque chose comme ça
<?php
MyDateTime extends \DateTime implements jsonSerialize
{
public function jsonSerialize() // this is never called
{
return $this->format("c");
}
}
$datetime = new MyDatetime();
$output = [
'date' => $datetime; // want to avoid $datetime->format("c") or something like this everywhere
];
json_encode($output);
Ce code maintenant sortie
{
"date": {
"date": "2016-10-27 11:23:52.000000",
"timezone_type": 3,
"timezone": "Europe/Paris"
}
}
Je voudrais avoir
{
"date": "2016-10-27T11:23:52+00:00"
}
'json_encode()' ne manipule aucune donnée que vous lui fournissez. Si vous mettez la date dans l'objet/tableau que vous encodez comme vous voulez le voir, cela restera comme ça. Donc, corrigez le code qui ajoute la date – RiggsFolly
Fondamentalement ... formatez manuellement la date en une chaîne avant de l'insérer dans json_encode. – deceze
@deceze oui, c'est probablement le seul moyen. Je dois retourner la date pour les articles, les commentaires, les discussions ... et plus encore ... J'ai donc pensé qu'il serait possible de le convertir automatiquement d'une manière ou d'une autre. – LiTe