2009-06-04 4 views
1

Ich verwalte eine RESTful JSON-Daten-API, deren Umfang zunimmt. Derzeit geben wir alle Daten über die Verbindung als Strings "YYYY-MM-DD" zurück, aber wir müssen auch das Konzept der Teildaten darstellen.Darstellen von Teildaten in einer JSON-API

Was ich mit einem Teildatum meine, ist ein Datumswert mit unbekannten Komponenten, entweder ein Jahr-Monat oder nur ein Jahr. In unserer Präsentationsebene würde dies wie folgt übersetzt werden:

2009-09-03 => '3rd September 2009' 
2009-09 => 'September 2009' 
2009  => 'Undated 2009' 

Gibt es Präzedenzfälle oder Standards für diese Art von Daten? Zum Beispiel ermöglicht MySQL dies, indem 00 Werte in Datums- und Datumszeit-Feldern erlaubt werden - zB: '2009-00-00' wird direkt in einem MySQL-Datumsfeld gespeichert, aber dieser Wert wird nicht konsistent übersetzt, wenn er von den meisten Programmiersprachen-Databibliotheken analysiert wird .

Was ist der beste Weg, dieses Konzept von Teildaten im JSON-Feed semantisch darzustellen?

Im Idealfall wären wir in der Lage, eine Lösung zu implementieren, die für unsere Kunden einfach zu parsen, aber auch einfach in der Dokumentation zu erklären ist.

Antwort

4

EDIT: Wenn Sie noch einmal darüber nachdenken, sind YYYY-MM und YYYY beide gültig ISO 8601, also wäre es wahrscheinlich besser, das einfach zu verwenden.

Es gibt keinen Standard für JSON-Daten (egal welcher Art), da JSON eine Teilmenge der JavaScript-Literalsyntax ist und JS keine Datumsliterale hat. Siehe http://msdn.microsoft.com/en-us/library/bb299886.aspx#intro_to_json_sidebarb.

+0

Das sieht so aus, als wäre es die bevorzugte Lösung für uns. (Die Alternative besteht darin, eine JSON-Struktur mit Jahr-, Monats- und Tageswerten zu erstellen). Ich wusste nicht, dass diese Werte ISO 8601 waren, aber es macht Sinn. – maetl

-1

Sie können Ihre Lösung @www.datejs.com

Dank finden.

+0

Dann wieder, er darf nicht, denn das ist eine Datumsbibliothek, kein Standard für wörtliche Daten. –

-1

In Bezug auf die Speicherung können Sie die Mehrdeutigkeit speichern, indem Sie Jahr, Monat und Tag in separaten Spalten speichern und Nullen zulassen. Auf diese Weise können Sie es mit String-Verkettung abfragen und die Koaleszenz (Tag, '00') -Funktion, um eine '00' herauszugreifen, wenn eine Spalte leer ist.

+0

Das hat meine Frage nicht beantwortet, aber ich würde gerne wissen, ob jemand rät, ein JSON-Objekt mit separaten Jahres-, Monats- und Tagfeldern anstelle eines einzelnen Datumswertes zu übergeben. – maetl