Express' res.send
la méthode reconnaît cet artist
est un objet et appelle JSON.stringify
dessus pour convertir l'objet en une chaîne JSON avant de l'envoyer. En simplifiant un peu, le JSON.stringify
la méthode parcourt votre artist
les clés d'objet dans l'ordre dans lequel elles ont été créées. (Voici un lien vers l'explication de commande plus compliquée.
) Cela explique le comportement actuel.
D'autres peuvent faire leurs propres propositions sur la façon dont vous pourriez faire ce que vous visez, mais en voici une simple à essayer d'abord :
-
Tout d'abord, faites votre propre
JSON.stringify
, en utilisant un "remplacement" pour créer l'ordre de sortie souhaité :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
Ensuite, utilisez
res.json(artistString)
, plutôt queres.send
, pour envoyer votre chaîne JSON avec leContent-Type
correct entête. (res.send
supposera que vous voulezContent-Type: “text/html”
.)
Il existe certainement des approches plus compliquées, notamment la création d'une fonction qui récupère les clés, les trie et renvoie un remplaçant; ou écrire votre propre .toJSON()
remplacer JSON.stringify
. Vous devrez peut-être implémenter l'une de ces approches, car vous avez des objets imbriqués ; le comportement du remplaçant peut être un peu bizarre dans ce cas
. Vous pourrez peut-être répertorier les propriétés imbriquées immédiatement après le parent, comme :
["realName", "type", ...]
mais puisque vous avez les mêmes noms pour certaines propriétés imbriquées, cela peut ou non fonctionner pour vous. Vous devrez peut-être stringifier l'intérieur avant de stringifier l'extérieur (gah !).
En tout cas, j'espère que ma suggestion pourra être une première étape.