JSON

2014-11-06 8 views
8

में विशेष वर्णों से कैसे बचें हमारे पास एक ऐसा फॉर्म है जिसमें एक विज्ञानिक अनुप्रयोग के लिए एक लंबा पैराग्राफ है जिसमें प्रतीक बीटा (ß-arrestin) आदि जैसे वर्ण शामिल हैं। हमारे पास एक JSON सेवा है जो मुले पर चल रही है जो डेटा लेती है और बनी रहती है एक ऑरैकल डेटाबेस के लिए। लंबे अनुच्छेद के साथ यह विशेष तत्व मुझे आरएएमएल/जेएसओएन में एक त्रुटि दे रहा है। नीचे त्रुटिJSON

com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 9)): has to be escaped using backslash to be included in string value 

फॉर्म तत्व जिस पर वैज्ञानिक लिखते हैं, हमारे पास कोई नियंत्रण नहीं है। तो मुले पक्ष पर हम इन पात्रों से कैसे बच सकते हैं जैसे जावा ने यूआरएलएनकोडेड किया है। बहुत धन्यवाद

उत्तर

1

आपके मामले में ऐसा लगता है कि आने वाला डेटा विकृत है। यह an encoding supported by the JSON spec में होना चाहिए: यूटीएफ -8 (डिफ़ॉल्ट), यूटीएफ -16, या यूटीएफ -32। तो सुनिश्चित नहीं है कि निम्नलिखित लागू है या नहीं। फिर भी ...

अधिकांश ऐप्स के लिए मैं JSON to Object mapping की सिफारिश करता हूं, जो भागने का ख्याल रखेगा। अन्यथा, आप जैक्सन (मुले द्वारा उपयोग की गई JSON लाइब्रेरी) String escape method पर सीधे कॉल कर सकते हैं।

यहां एक उदाहरण है जिसका उपयोग आप एमईएल में कर सकते हैं। String.valueOf आवश्यक है क्योंकि quoteAsString रिटर्न char[]:

<configuration> 
    <expression-language> 
    <import class="org.codehaus.jackson.io.JsonStringEncoder" /> 
    <global-functions> 
     def quoteJSONString(s) { 
     String.valueOf(JsonStringEncoder.getInstance().quoteAsString(s)) 
     } 
    </global-functions> 
    </expression-language> 
</configuration> 
2

लक्ष्य पर आप डेटा को टेक्स्ट/सादा के रूप में प्राप्त कर सकते हैं।

स्वच्छ यह चलाकर:

input.replaceAll("\\p{Cc}", ""). 

इसे वापस कन्वर्ट किसी भी JSON लाइब्रेरी का उपयोग कर JSON डेटा करने के लिए:

JSONObject inputParams = JSONObject.fromObject(input); 

आशा है कि यह मदद करता है।