Lesobjets sont formidables ! Leur flexibilité, combinée à leur rapidité et à leur élégance, en fait un premier choix pour la plupart des développeurs. L’utilisation des dates dans les objets est désormais plus facile et plus intuitive. Désormais, les dates peuvent être définies comme des dates – et non plus comme des chaînes de caractères à l’intérieur des objets !
Comment cela fonctionne-t-il ?
Pour utiliser les dates dans les objets, il suffit de vérifier le paramètre de compatibilité « Utiliser le type de date au lieu du format de date ISO dans les objets », dans les paramètres de la base de données.
Une fois que cela est fait, OB SET et OB Get fonctionnent sans nécessiter la constante is date.
OB SET ($myObject; "maDate" ;$date)
$date :=OB Get ($myObject; "maDate")
La notation d’objet fonctionne également ! Jetez un coup d’œil :
$myObject.myDate:=$date
$date :=$myObject.myDate
Stringify et Parse
La compatibilité est maintenue
Avant la version 4D v16 R6, lors de l’appel de la commande JSON Stringify les objets contenant des dates étaient systématiquement « stringifiés » selon la normalisation ISO 8601 dans le format suivant « YYYY-MM-DDThhmmss.sssZ » . L’opération inverse, JSON Parsen’interprète pas ce format par défaut, et produit donc une chaîne de caractères.
Quoi de neuf ?
Si l’option de compatibilité dans les paramètres de la base de données est cochée, les dates seront simplement formatées comme « YYYY-MM-DD » (toujours selon la norme ISO 8601) lors de l’appel de la commande JSON stringify lors de l’appel de la commande Si vous utilisez JSON Parsecette chaîne sera alors définie comme une date (et non comme une chaîne) dans l’objet !
Changement de mode de façon dynamique
Si nécessaire, ce paramètre par défaut peut être modifié par programmation avec la commande SET DATABASE PARAMETER et le sélecteur Dates inside object.
Rappel: SET DATABASE PARAMETER(Dates inside object;option) est local au processus en cours.
Les trois valeurs possibles pour ce option sont maintenant :
- String type without time zone (précédemment connu sous le nom d’ignorer le fuseau horaire local)
- String type with time zone (précédemment connu sous le nom de prendre en compte le fuseau horaire)
- Date type (nouveau !)
Par conséquent, lorsque vous importez des données JSON dans 4D, vous disposez désormais d’un moyen de changer dynamiquement le format des dates.