Express' res.send
метод разпознава този artist
е обект и извиква JSON.stringify
върху него, за да конвертирате обекта в JSON низ преди изпращане. Малко опростено, JSON.stringify
методът преминава през вашия artist
обектни ключове в реда, в който са създадени. (Ето връзка към по-сложното обяснение на поръчката.
) Това обяснява текущото поведение.
Други може да се включат със собствени предложения за това как можете да направите това, към което се стремите, но ето едно просто, което да опитате първо:
-
Първо, направете свойсами
JSON.stringify
, използване на „заместител“, за да създадете изходния ред, който желаете :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
След това използвайте
res.json(artistString)
, вместоres.send
, за да изпратите вашия JSON низ с правилнияContent-Type
заглавка. (res.send
ще приеме, че искатеContent-Type: “text/html”
.)
Определено има по-сложни подходи, включително създаване на функция, която получава ключове, сортира ги и връща заместител; или да напишете свой собствен .toJSON()
заместител на JSON.stringify
. Може да се наложи да приложите един от тези подходи, защото имате вложени обекти; поведението на заместителя може да бъде малко нестабилно в този случай
. Може да можете да изброите вложените свойства веднага след родителя, като:
["realName", "type", ...]
но тъй като имате едни и същи имена за някои вложени свойства, това може или не може да работи за вас. Може да се наложи да нанижете вътрешностите, преди да нанижете външните части (га!).
Във всеки случай се надявам, че предложението ми може да бъде първа стъпка.