Express' res.send
metode genkender den artist
er et objekt og kalder JSON.stringify
på den for at konvertere objektet til en JSON-streng før afsendelse. For at forenkle en smule, JSON.stringify
metode itererer gennem din artist
objektnøgler i den rækkefølge, de blev oprettet. (Her er et link til den mere komplicerede bestillingsforklaring.
) Det forklarer den nuværende adfærd.
Andre kan komme med deres egne forslag til, hvordan du kan gøre det, du sigter efter, men her er et simpelt forslag først:
-
Gør først dit selv
JSON.stringify
, ved at bruge en "erstatter" til at oprette den outputrækkefølge, du ønsker :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
Brug derefter
res.json(artistString)
, i stedet forres.send
, for at sende din JSON-streng med den korrekteContent-Type
header. (res.send
vil antage, at du vil haveContent-Type: “text/html”
.)
Der er helt sikkert mere komplicerede tilgange, herunder oprettelse af en funktion, der henter nøgler, sorterer dem og returnerer en erstatning; eller skriv din egen .toJSON()
erstatte JSON.stringify
. Du skal muligvis implementere en af disse fremgangsmåder, fordi du har indlejrede objekter; erstatningens adfærd kan være en smule skævt i dette tilfælde
. Du kan muligvis vise de indlejrede egenskaber umiddelbart efter forælderen, f.eks.:
["realName", "type", ...]
men da du har de samme navne for nogle indlejrede egenskaber, fungerer dette muligvis ikke for dig. Du skal muligvis strenge indersiden, før du strenger ydersiden (gah!).
Under alle omstændigheder kan mit forslag forhåbentlig være et første skridt.