heinetz: json_enconde und Javascript-Objekte

Hallo Forum,

ich generiere aus einem PHP-Array einen JSON-String per json_encode. Das funktioniert alles wunderbar. Jetzt muss ich aber einem Element ein 'new Date()' zuweisen. Das funktioniert aber leider nicht, weil json_encode es in Anführungszeichen setzt.

Gibt es dafür eine elegantere Lösung, als das JSON-Objekt javascriptseitig zu durchforsten?

danke für Tipps und

beste gruesse,
heinetz

  1. Jetzt muss ich aber einem Element ein 'new Date()' zuweisen.

    JSON kennt keine Date-Objekte oder sonstige spezifische JavaScript-Objekte (RegExp, Funktionen, ...). Verwende einen Unix-Timestamp. Den kannst du clientseitig einfach in ein Date-Objekt umwandeln: new Date, setTime.

    Mathias

    1. JSON kennt keine Date-Objekte oder sonstige spezifische JavaScript-Objekte (RegExp, Funktionen, ...).

      Interessant! Wenn das JSON-Objekt nämlich nicht mit json_encode erzeugt wird funktioniert das wunderbar.

      Verwende einen Unix-Timestamp. Den kannst du clientseitig einfach in ein Date-Objekt umwandeln: new Date, setTime.

      Ja, so umgehe ich das bisher auch.

      beste gruesse,
      heinetz

      1. JSON kennt keine Date-Objekte oder sonstige spezifische JavaScript-Objekte (RegExp, Funktionen, ...).

        Interessant! Wenn das JSON-Objekt nämlich nicht mit json_encode erzeugt wird funktioniert das wunderbar.

        Ja, natürlich.

        JSON ist ein eigenes Format. JSON ist immer gültiges JavaScript. Aber nicht jedes gültige JavaScript ist JSON. JSON ist eine UNTERMENGE von JavaScript, ein Subset. JSON kann nicht alles, was JavaScript kann.

        Wenn du den Code ohnehin als JavaScript an den Browser sendest, dann kannst du new Date, RegExps usw. nach Lust und Laune verwenden.
        Wenn du den Code allerdings irgendwo als JSON verarbeitest – ob mit PHP (json_encode/json_decode) oder JavaScript (JSON.parse/stringify) –, dann kannst du nur die Datentypen verwenden, die JSON erlaubt. Das sind nur Object, Array, Boolean, String und Number.

        Mathias

  2. moin,

    danke für Tipps und

    Übertrage in der JSON-Response die Argumente, die "new Date();" braucht, welche das sein können siehe http://de.selfhtml.org/javascript/objekte/date.htm@title=hier. Diese Argumente also serverseitig aufarbeiten und in json einbauen.

    Hotti