it-swarm.com.de

Sollte JSON Nullwerte enthalten

Ich erstelle eine API, die Ergebnisse als JSON zurückgibt. Gibt es eine aktuelle bewährte Methode, um festzulegen, ob Schlüssel in das Ergebnis aufgenommen werden sollen, wenn der Wert null ist? Zum Beispiel:

{
    "title":"Foo Bar",
    "author":"Joe Blow",
    "isbn":null
}

oder

{
    "title":"Foo Bar",
    "author":"Joe Blow"
}

Da der zweite kleiner ist, neige ich zu diesem Stil, aber ich bin nicht sicher, ob es einen bevorzugten Stil gibt oder nicht. Aus Sicht des Kunden scheint es, als wären beide Stile funktional äquivalent. Irgendwelche Vor- oder Nachteile?

85
jjathman

Die zweite spart ein wenig an Bandbreite, aber wenn dies ein Problem wäre, würden Sie auch indizierte Arrays verwenden, anstatt die JSON mit Schlüsseln zu füllen. ["Foo Bar","Joe Blow"] ist deutlich kürzer als das, was Sie jetzt haben.

Ich denke nicht, dass es in Sachen Benutzerfreundlichkeit einen Unterschied macht. In beiden Fällen springt if(json.isbn) zur else. Normalerweise besteht keine Notwendigkeit, zwischen null (kein Wert) und undefined (kein angegebener Wert) zu unterscheiden.

30

Ich bin ein Fan davon, Null explizit mit einzubeziehen, da dies eine Bedeutung hat. Wenn man eine Eigenschaft weglässt, bleibt Unklarheit.

Solange Ihr Protokoll mit dem Server vereinbart ist, kann eine der oben genannten Methoden funktionieren. Wenn Sie jedoch Nullen vom Server übergeben, sind die APIs meiner Meinung nach später flexibler.

Außerdem sollte erwähnt werden, dass die hasOwnProperty-Funktion von Javascript weitere Informationen liefert.

/* if true object DOES contain the property with *some* value */
if( objectFromJSON.hasOwnProperty( "propertyName" ) )

/* if true object DOES contain the property and it has been set to null */
if( jsonObject.propertyName === null )

/* if true object either DOES NOT contain the property
   OR
   object DOES contain the property and it has been set to undefined */
if( jsonObject.propertyName === undefined )
75
rushkeldon

In JavaScript bedeutet null etwas ganz anderes als undefined.

Ihre JSON-Ausgabe sollte widerspiegeln, was von Ihrer Anwendung im spezifischen Kontext der Verwendung der JSON-Daten verwendet und benötigt wird.

20
Brad

Sie sollten es unbedingt hinzufügen, wenn zwischen null und undefined unterschieden werden muss, da diese in Javascript zwei verschiedene Bedeutungen haben. Sie können an null denken, dass die Eigenschaft unbekannt oder bedeutungslos ist, und undefined als Bedeutung, dass die Eigenschaft nicht existiert.

Auf der anderen Seite, wenn es nicht nötig ist, dass jemand diese Unterscheidung vornimmt, dann machen Sie es weiter und lassen Sie es weg.

10
Paulpro

Ich denke, es ist kein Unterschied, wenn Sie den JSON als Daten hinter dem Benutzererlebnis verwenden.

Der Unterschied erscheint in JSON-Konfigurationsdateien, wenn ein Benutzer etwas von Hand bearbeiten soll. Wenn Sie das erste Beispiel verwenden, geben Sie dem Benutzer einige Hinweise zur Konfiguration.

0
Alexey Kachalov