Express' res.send
metoden känner igen den artist
är ett objekt och anropar JSON.stringify
på den för att konvertera objektet till en JSON-sträng innan du skickar. För att förenkla lite, JSON.stringify
metod itererar genom din artist
objektnycklar i den ordning de skapades. (Här är en länk till den mer komplicerade beställningsförklaringen.
) Det förklarar det nuvarande beteendet.
Andra kanske kommer med sina egna förslag på hur du kan göra det du siktar på, men här är en enkel att prova först:
-
Gör först ditt egen
JSON.stringify
, använda en "ersätter" för att skapa den utdataordning du vill ha :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
Använd sedan
res.json(artistString)
, istället förres.send
, för att skicka din JSON-sträng med rättContent-Type
rubrik. (res.send
antar att du vill haContent-Type: “text/html”
.)
Det finns definitivt mer komplicerade tillvägagångssätt, inklusive att skapa en funktion som hämtar nycklar, sorterar dem och returnerar en ersättare; eller skriv din egen .toJSON()
ersätta JSON.stringify
. Du kan behöva implementera en av dessa metoder, eftersom du har kapslade objekt; ersättarens beteende kan vara lite knäpp i det här fallet
. Du kanske kan lista de kapslade egenskaperna direkt efter den överordnade, som:
["realName", "type", ...]
men eftersom du har samma namn för vissa kapslade egenskaper, kanske detta fungerar eller inte fungerar för dig. Du kanske måste stränga insidan innan du stränga utsidan (gah!).
I vilket fall som helst, förhoppningsvis kan mitt förslag vara ett första steg.