में जेसन स्ट्रिंग से कैसे बचें हम स्प्रिंग एमवीसी और फ्रीमार्कर का उपयोग टेम्पलेटिंग भाषा के रूप में एक आरामदायक एपीआई बना रहे हैं। हम freemarker में json प्रतिक्रियाओं का निर्माण करने के लिए चुना हैफ्रीमार्कर
उदाहरण freemarker.ftl:
{
"field1" : "${response.value1}",
"field2" : "${response.value2}"
}
हम एक समस्या मिलती है, जब मूल्यों में तार उद्धरण चिह्न (या अन्य वर्णों के किसी भी JSON वाक्य रचना में शामिल)।
प्रश्न: मैं फ्रीमार्कर का उपयोग करके इन तारों से कैसे बच सकता हूं?
हम ?xml
या ?html
पर ध्यान दिया है, लेकिन वे (जैसे \
के रूप में) सभी प्रासंगिक पात्रों को कवर नहीं है।
संपादित करें:?js_string
जावास्क्रिप्ट के साथ काम करने के लिए स्ट्रिंग से बच जाएगा। और चूंकि JSON जावास्क्रिप्ट (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) पर आधारित है, यह काम करेगा।
EDIT2: यदि एकल-कोट पॉप अप हो जाता है, तो ?js_script
इससे बच जाएगा जो फिर से अमान्य JSON की ओर जाता है। इसके लिए हॉटफिक्स है:
${variable?js_string?replace("\\'", "\'")}
और तुम सच में चुनने की करना चाहते हैं: वैकल्पिक रूप से
${variable?js_string?replace("\\'", "\'")?replace("\\>",">")}
यदि आप वसंत का उपयोग करें: http://www.springsurf.org/sites/1.0.0.M3/spring-webscripts/spring-webscripts-documentation/reference/html-single/index.html#js-api-index-org.springframework.extensions.webscripts.json.jsonutils
स्प्रिंग विकल्प –