Express' res.send
-Methode erkennt diesen artist
ist ein Objekt und ruft JSON.stringify
auf darauf, um das Objekt vor dem Senden in eine JSON-Zeichenfolge zu konvertieren. Etwas vereinfacht, die JSON.stringify
-Methode durchläuft Ihren artist
Objektschlüssel in der Reihenfolge, in der sie erstellt wurden. (Hier ist ein Link zur komplizierteren Bestellerklärung.
) Das erklärt das aktuelle Verhalten.
Andere können sich mit ihren eigenen Vorschlägen dazu äußern, wie Sie das erreichen könnten, was Sie anstreben, aber hier ist ein einfacher, den Sie zuerst ausprobieren sollten:
-
Machen Sie zuerst Ihre eigenen
JSON.stringify
, mit einem "Replacer", um die gewünschte Ausgabereihenfolge zu erstellen :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
Verwenden Sie dann
res.json(artistString)
, stattres.send
, um Ihren JSON-String mit dem richtigenContent-Type
zu senden Header. (res.send
nimmt an, dass SieContent-Type: “text/html”
möchten .)
Es gibt definitiv kompliziertere Ansätze, darunter das Erstellen einer Funktion, die Schlüssel abruft, sie sortiert und einen Ersetzer zurückgibt; oder eigene .toJSON()
schreiben Ersatz für JSON.stringify
. Möglicherweise müssen Sie einen dieser Ansätze implementieren, da Sie verschachtelte Objekte haben. das Verhalten des Ersetzers kann etwas sein wackelig in diesem Fall
. Möglicherweise können Sie die verschachtelten Eigenschaften direkt nach dem übergeordneten Element auflisten, z. B.:
["realName", "type", ...]
Da Sie jedoch für einige verschachtelte Eigenschaften dieselben Namen haben, kann dies für Sie funktionieren oder nicht. Möglicherweise müssen Sie die Innenseiten besaiten, bevor Sie die Außenseiten besaiten (gah!).
Auf jeden Fall kann mein Vorschlag hoffentlich ein erster Schritt sein.