अपने कोड के दिखने से ऐसा लगता है कि आप ऑब्जेक्ट प्रकार की एक सरणी का उपयोग करके स्वयं द्वारा JSON स्ट्रिंग बनाने की कोशिश कर रहे हैं। मेरा एकमात्र अनुमान यह है कि यह क्यों काम नहीं करता है कि जीएसओएन (प्ले द्वारा उपयोग में जेएसओएन लाइब्रेरी) यह नहीं जानता कि इसे कुंजी-मूल्य जोड़े में कैसे परिवर्तित किया जाए (हालांकि आपकी सरणी 2-आयामी है)। तो कैसे स्ट्रिंग और उसकी सामग्री को statusArray
बदलने के बारे में: कि renderJSON(statusArray)
में
{
"Status": "401",
"Message": "Unauthorized",
"Detail": "No API Key Supplied"
}
डाल दिया और आप ठीक होना चाहिए।
एक विकल्प के रूप आप एक सरल .json
टेम्पलेट निम्नलिखित की तरह बना सकते हैं:
{
"Status": ${status},
"Message": ${message},
"Detail": ${detail}
}
और render(status, message, detail)
के माध्यम से एक नियंत्रक विधि से यह कहते हैं। status
, message
और detail
स्ट्रिंग्स भी यहां हैं। उदाहरण नियंत्रक विधि:
public static void loginFail(final String status, final String message, final String detail) {
render(status, message, detail);
}
और अपने टेम्पलेट ही कहा जाता है loginFail.json
(नियंत्रक विधि का नाम)। इस तरह आप लॉग इन को सत्यापित करने के लिए जो भी तर्क है उसे नियंत्रक विधि पर कॉल कर सकते हैं। एक बार जब लॉगिन विफल हो जाता है तो आप निर्दिष्ट करते हैं कि loginFail
विधि को कॉल करके यह क्यों है (स्थिति, संदेश और विवरण के माध्यम से)।
public static void LoginFail() {
Map<String, String> status = new HashMap<String, String>();
status.put("Status", "401");
status.put("Message", "Unauthorized");
status.put("Detail", "No API Key Supplied");
renderJSON(status);
}
आप:
यह भी ध्यान देने योग्य बात है कि renderJSON एक स्ट्रिंग तर्क के रूप में अच्छी तरह से जो नजरअंदाज ले जा सकते हैं, के लायक है जीएसओएन पार्सिंग। यह उपयोगी है अगर आप अपने JSON पार्सिंग (जैसे मैं करता हूं) के लिए जैक्सन की तरह कुछ उपयोग करता हूं। –