Peut un objet JSON renvoyé par PHP contenir un objet date
Est-il un moyen de créer un objet JSON en PHP qui contient un script javascript date
objet? Ne json_encode
convertir automatiquement PHP DateTime
à du Javascript date
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer la date /heure comme un timestamp UNIX qui est un entier, une prise en charge nativement type de données en JSON. DateTime en PHP a une "méthode gettimestamp()" fonction qui vous donnera de la valeur.
Le JavaScript
Date
objet n'est pas valide JSON et est visible dans la nature, parce que beaucoup de gens analyser leur JSON avec un véritableeval()
.Facile, lisible par l'homme, l'alternative serait d'envoyer la date comme une chaîne de caractères dans un format pris en charge par
Date.parse()
.Votre JSON:
Votre JavaScript:
Source: http://json.org/ - Voir l'encadré sur la droite pour une liste des types de données JSON valide.
json_encode
que j'ai un grand tableau associatif dont seules certaines valeurs ($dates[i]["start"]
) sont des dates.Réponse courte: non.
JSON n'est qu'un texte, et toutes les valeurs sont soit des tableaux, des objets, des nombres, des chaînes, des booléens ou null. "L'objet" dans ce cas est fondamentalement juste un tableau PHP - elle ne peut pas disposer de méthodes. Vous avez besoin de convertir manuellement les dates (qui pourront être des chaînes de caractères) dans les Dates.
La définition officielle de l'JSON est à http://www.json.org/
Alors que je suis d'accord avec @postfuturist réponse, il existe une alternative: expression régulière avec le sucre syntaxique.
Qui donnerait:
ou
si les données JSON doit être manié en JavaScript.
Ce serait de couvrir la plupart des cas d'utilisation (à noter que le timestamp UNIX n'est pas nécessairement de 10 caractères). Si elle est utilisée dans la production, plus de sucre syntaxique doit être utilisé pour empêcher le remplacement accidentel de la valeur.
Ce devrait être utilisée seulement quand JSON est injecté au temps de chargement de page, plutôt que via XHR, par exemple
Sûr! Utilisation:
EDIT: Ajouter l'exemple de code.
Voici mon code et il FONCTIONNE.
EDIT 2: Rendre plus comme JSON.
Voici mon code PHP.
Il générer le code HTML suivant:
Lorsqu'il est exécuté, il affiche:
Si vous pouvez passer une chaîne de caractères qui ressemblent à JavaScript littéral d'objet (sans utiliser de variable à l'intérieur d'elle), la chaîne peut être eval être tourné vers un objet. Cela signifie que vous pouvez l'utiliser comme JSON.
Espère que cette aide.
eval
qui est à la fois extrêmement lent, et dangereux -- utilisation correcte serait JSON.parse(string), qui est beaucoup plus rapide, et a l'avantage d'être réellement libre de les nombreuses failles de sécurité présentes dans eval.