res.send
Ekspres' metode mengakui bahwa artist
adalah Object, dan memanggil JSON.stringify
di atasnya untuk mengonversi Objek menjadi string JSON sebelum mengirim. Sederhanakan sedikit, JSON.stringify
metode diulang melalui artist
Anda kunci objek dalam urutan mereka dibuat. (Berikut ini tautan ke penjelasan pemesanan yang lebih rumit.
) Itu menjelaskan perilaku saat ini.
Orang lain mungkin setuju dengan proposal mereka sendiri tentang bagaimana Anda dapat melakukan apa yang Anda tuju, tetapi berikut ini yang sederhana untuk dicoba terlebih dahulu:
-
Pertama, lakukan sendiri
JSON.stringify
, menggunakan "pengganti" untuk membuat urutan keluaran yang Anda inginkan :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
Kemudian, gunakan
res.json(artistString)
, daripadares.send
, untuk mengirim string JSON Anda denganContent-Type
yang benar kepala. (res.send
akan menganggap Anda inginContent-Type: “text/html”
.)
Pasti ada pendekatan yang lebih rumit, termasuk membuat fungsi yang mendapatkan kunci, mengurutkannya, dan mengembalikan pengganti; atau tulis sendiri .toJSON()
pengganti JSON.stringify
. Anda mungkin perlu menerapkan salah satu dari pendekatan ini, karena Anda memiliki objek bersarang; perilaku pengganti bisa sedikit miring dalam hal ini
. Anda mungkin dapat membuat daftar properti bersarang segera setelah induknya, seperti:
["realName", "type", ...]
tetapi karena Anda memiliki nama yang sama untuk beberapa properti bersarang, ini mungkin berhasil atau tidak untuk Anda. Anda mungkin harus mengencangkan bagian dalam sebelum mengencangkan bagian luar (gah!).
Bagaimanapun, semoga saran saya bisa menjadi langkah awal.