एक्सप्रेस' 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()
writing लिखना JSON.stringify
. के लिए स्थानापन्न करें . आपको इनमें से किसी एक दृष्टिकोण को लागू करने की आवश्यकता हो सकती है, क्योंकि आपके पास नेस्टेड ऑब्जेक्ट हैं; प्रतिस्थापनकर्ता का व्यवहार थोड़ा सा हो सकता है इस मामले में विंकी
. आप माता-पिता के तुरंत बाद नेस्टेड गुणों को सूचीबद्ध करने में सक्षम हो सकते हैं, जैसे:
["realName", "type", ...]
लेकिन चूंकि आपके पास कुछ नेस्टेड गुणों के लिए समान नाम हैं, यह आपके लिए काम कर भी सकता है और नहीं भी। इससे पहले कि आप बाहरी (गाह!) को स्ट्रिंग करें, आपको अंदरूनी कड़ी करनी पड़ सकती है।
किसी भी मामले में, उम्मीद है कि मेरा सुझाव पहला कदम हो सकता है।