Ich erstelle eine API, die Ergebnisse als JSON zurückgibt. Gibt es derzeit eine bewährte Methode, ob Schlüssel in das Ergebnis aufgenommen werden sollen, wenn der Wert null ist? Beispielsweise:
{
"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, bin mir aber nicht sicher, ob es einen bevorzugten Stil gibt oder nicht. Aus Kundensicht scheinen beide Stile funktional gleichwertig zu sein. Irgendwelche Vor- oder Nachteile für jeden?
javascript
json
null
undefined
jjathman
quelle
quelle
Antworten:
Der zweite spart eine kleine Menge an Bandbreite, aber wenn dies ein Problem wäre, würden Sie auch indizierte Arrays verwenden, anstatt den JSON mit Schlüsseln zu füllen. Ist eindeutig
["Foo Bar","Joe Blow"]
viel kürzer als das, was Sie jetzt haben.In Bezug auf die Benutzerfreundlichkeit denke ich nicht, dass es einen Unterschied macht. In beiden Fällen
if(json.isbn)
wird zum gesprungenelse
. Es besteht normalerweise keine Notwendigkeit, zwischennull
(kein Wert) undundefined
(kein gegebener Wert) zu unterscheiden.quelle
!= null
(nicht streng beabsichtigt)if( typeof onbeforepaste == "undefined")
zu sehen, obonBeforePaste
unterstützt wird. Selbst dann macht es keinen wirklichen Unterschied, da Sie Ereignisse nach Belieben zuweisen können (sie werden einfach nichts tun, wenn sie nicht unterstützt werden).Ich bin ein Fan davon, Null immer explizit einzuschließen, da dies Bedeutung hat. Das Weglassen einer Eigenschaft hinterlässt Mehrdeutigkeiten.
Solange Ihr Protokoll mit dem Server vereinbart ist, kann eines der oben genannten Verfahren funktionieren. Wenn Sie jedoch Nullen vom Server übergeben, werden Ihre APIs meiner Meinung nach später flexibler.
Sollte auch erwähnen, dass die hasOwnProperty-Funktion von Javascript Ihnen weitere Einblicke gibt.
quelle
"propertyName" in objectFromJSON
stattobjectFromJSON.hasOwnProperty("propertyName")
. Wenn Sie darauf bestehen,hasOwnProperty
schreiben SieObject.prototype.hasOwnProperty.call(objectFromJSON, "propertyName")
aus Sicherheitsgründen.Bedeutet in JavaScript
null
etwas ganz anderes alsundefined
.Ihre JSON-Ausgabe sollte widerspiegeln, was von Ihrer Anwendung im spezifischen Kontext der Verwendung der JSON-Daten verwendet und benötigt wird.
quelle
{"prop":undefined}
unterscheidet sich von{}
.Sie sollten es auf jeden Fall einschließen, wenn zwischen
null
undundefined
da diese in Javascript zwei verschiedene Bedeutungen haben, unterschieden werden muss. Sie können sich vorstellen,null
dass die Eigenschaft unbekannt oder bedeutungslos ist undundefined
dass die Eigenschaft nicht existiert.Wenn andererseits niemand diese Unterscheidung treffen muss, lassen Sie sie weg.
quelle
Ich denke, es ist kein Unterschied, wenn Sie den JSON als Daten für die Benutzererfahrung verwenden.
Der Unterschied tritt in JSON-Konfigurationsdateien auf, wenn ein Benutzer etwas von Hand bearbeiten sollte. Wenn Sie das erste Beispiel verwenden, geben Sie dem Benutzer einen Hinweis auf die Konfiguration.
quelle