2011-01-12 13 views
9

मैं मान रहा था कि जैक्सन क्रमशः सीरियलाइजेशन के दौरान विशेष पात्रों से बच जाएगा यानी "/ पथ /" को "\/पथ \ /" के रूप में क्रमबद्ध करें। ऐसा प्रतीत होता है मामला होने के लिए नहीं - कम से कम 1.6 के साथ बॉक्स से बाहर:क्या जैक्सन JSON विशेष चार भागने से करता है?

@Test 
public void testJacksonSerialize() throws Exception 
{ 
    ObjectMapper om = new ObjectMapper(); 
    assertEquals("\\/path\\/", om.writeValueAsString("/path/")); 
} 

... विफल रहता है - उत्पादन का उत्पादन किया है "/ path /"। क्या मुझे अपना खुद का धारावाहिक लिखना है या जैक्सन में विशेष चार भागने को सक्षम करने का कोई तरीका है?

धन्यवाद, -nikita

+0

वायरल जेएसओएन तारों में एक विशेष चरित्र है? – Joey

+0

'/' अवैध JSON है? – skaffman

+0

असल में, क्या "/" बच जाना चाहिए बेहतर प्रश्न है। मैंने इस ट्विलियो दस्तावेज़ को देखने से ऐसा माना: http://www.twilio.com/docs/api/2010-04-01/rest/response#response-formats-list-paging- जानकारी लेकिन जेएसलिंट ऐन ' शिकायत नहीं फिर जेएसओएन प्रतिक्रियाओं में ट्विलियो "/" से बच रहा है? – Nikita

उत्तर

4

जैक्सन केवल अनिवार्य चीजें निकल जाता है। "/" ऐसा कुछ नहीं है जिसे आपको बचाना चाहिए, इसलिए यह नहीं है। यह JSON विनिर्देश के अनुसार।

अब: यदि आप पूरी तरह से भागना चाहते हैं, तो आप "कच्चे" सामग्री या मूल्यों को लिखने के तरीकों का उपयोग कर सकते हैं (जिस स्थिति में जैक्सन कोई प्रसंस्करण नहीं करता है और आउटपुट में स्ट्रिंग डंप करता है)।

लेकिन क्या आपको वास्तव में ऐसी बचपन की आवश्यकता है? मुझे पता है कि कुछ जनरेटर इसे से बचते हैं (मेरे लिए अज्ञात कारणों से), लेकिन कोई पार्सर इसकी अपेक्षा नहीं करता है इसलिए स्लेश को अनचाहे छोड़ना ठीक होना चाहिए। यह बैकस्लाश से अलग है जो स्पष्ट रूप से बच जाना चाहिए।

1

जेएसओएन में स्लैश "/" से बचने की आवश्यकता नहीं है क्योंकि इसका कोई विशेष अर्थ नहीं है। फिर भी JSON निम्न कारणों से बचने के लिए स्लैश को अनुमति देता है।

यदि आप किसी JSON टेक्स्ट को < SCRIPT> HTML टेक्स्ट के तत्व में डंप करते हैं, तो आपको यह सुनिश्चित करना होगा कि टेक्स्ट में दो-वर्ण-अनुक्रम "< /" नहीं होता है। वह अनुक्रम एचटीएमएल नियमों के अनुसार तुरंत स्क्रिप्ट तत्व को समाप्त कर देगा। लेकिन अगर JSON टेक्स्ट "< \ /" पढ़ता है, तो HTML नियमों में हस्तक्षेप करते समय JSON का यही अर्थ है। नतीजतन, कुछ JSON जनरेटर स्लैश से बचते हैं और केवल तभी जब यह कम से कम संकेत से पहले होता है।

कहा जा रहा है कि, मुझे आपके प्रश्न का सीधा जवाब नहीं पता है (जैक्सन में पूरी तरह से भागने के लिए कैसे करें)।

0

कुछ ब्राउज़र के साथ टूलटिप के मामले में नया लाइन वर्ण काम नहीं करेगा। काम नहीं \ r \ n नहीं काम कर रहा है या \ N काम नहीं कर

उपयोग डबल बैकस्लैश वर्ण

समाधान को छोड़ने के लिए: की '\ r \ n' जगह में उपयोग '\\ r \\ n',
यह आपकी समस्या का समाधान करेगा।

संबंधित मुद्दे