2010-06-01 13 views
9

में उद्धरण चिह्नों को हटा रहा है, मैं net.sf.json.JSONObject का उपयोग कर रहा हूं ताकि कुछ डेटा को फ्रंट एंड एप्लिकेशन पर भेजा जा सके, और जिस कोड के साथ मैं बातचीत कर रहा हूं उसे उद्धरण जोड़ने के तरीके पसंद नहीं हैं हर क्षेत्र के नाम के लिए अंक।JSONObject

उदाहरण के लिए:

myString = new JSONObject().put("JSON", "Hello, World!").toString(); 

स्ट्रिंग {: "नमस्ते, दुनिया" "JSON"} पैदा करता है।

मैं इसे वापस लौटना चाहता हूं {JSON: "हैलो, वर्ल्ड"} - "JSON" के आसपास उद्धरण के बिना। ऐसा करने के लिए मुझे क्या करना है?

+0

क्यों आप ऐसा करना चाहते हैं? (मैं उत्सुक हूँ) – OscarRyz

+0

मैं मौजूदा कोड है कि यह उस तरह से पसंद करती है के साथ बातचीत कर रहा हूँ क्योंकि। (बस इसे और अधिक स्पष्ट करने के लिए मूल प्रश्न संपादित किया गया।) –

उत्तर

1

javadoc कहते

toString तरीकों सख्ती से JSON sysntax नियमों का पालन द्वारा उत्पादित ग्रंथों।

यदि आप JSON वाक्यविन्यास नियमों के अनुरूप होना चाहते हैं, तो आप उद्धरणों को हटा नहीं सकते हैं।

या यदि आपको नियमों की परवाह नहीं है, तो आप इस तारों को नियंत्रित करने के लिए अपनी सरल विधि बना सकते हैं।

इसके अलावा, कोट्स की 2 पहली घटनाओं को प्रतिस्थापित करना मान्य है, क्योंकि @ चार्ल्स लीफ ने कहा।

1

क्या मैं पूछ सकता हूं कि आप ऐसा क्यों करना चाहते हैं? अनुरोध में स्थानांतरित होने वाले कुल बाइटों में से अधिकांश को बचाने के लिए यह नहीं जा रहा है।

किसी भी मामले में, मैं कहूंगा कि आपको कुछ लिखना है, एक regexp या कुछ और, /\"([^"]+)\"\:/ को पहले मैच $1 पर बदल देता है। मैं जावा में धाराप्रवाह नहीं हूं इसलिए मैं वास्तव में और मदद नहीं कर सकता।

+0

मैं कुछ बैक-एंड कोड को सामने के अंत के साथ बहुत ज्यादा खराब किए बिना बदलने की कोशिश कर रहा हूं ... और फ्रंट एंड उद्धरण चिह्नों की तरह प्रतीत नहीं होता है। इसलिए मैं सिर्फ आगे की ओर देने की कोशिश कर रहा हूं जो वह चाहता है। –

+1

फ्रंट एंड में एक बग की तरह लगता है।लेकिन किसी भी मामले में, मेरी नियमित अभिव्यक्ति आपकी मदद करने में सक्षम होना चाहिए। \ "\" ([^ "] +) \" \: '' $ 1: 'के साथ बदलें जो कि जावा में काम करना चाहिए। '$ 1' आपके उदाहरण' JSON' में मिल जाएगा। – CharlesLeaf

+0

हाँ यह ... जब आप नोडजेस के साथ websockets पर डेटा का एक टन स्थानांतरित कर रहे हैं, तो दो उद्धरण चिह्नों को स्थानांतरित किए बिना पाइप पर सहेजे जा रहे डेटा की मात्रा बहुत अधिक है। –

1

JSON definition प्रत्येक जोड़ी को एक स्ट्रिंग के रूप में वर्णित करता है: मान, इसलिए आप net.sf पुस्तकालयों को उस विशेष अनुबंध का उल्लंघन करने की उम्मीद नहीं कर सकते हैं। यदि आप मूल्यों तक पहुंचने में सक्षम होने के बारे में चिंतित हैं, तो वे कुछ जावास्क्रिप्ट कोड (यदि आप यही कर रहे हैं) पर लौट आए हैं, तो आपको नहीं होना चाहिए।

net.sf.json.util.WebUtils.toString(JSONObject);

जावा doc का संदर्भ लें:

var str = {"JSON": "Hello, World"}; 
var obj = eval(str); 
alert(obj.JSON); // Alerts "Hello, World" 
+0

यदि ओपी एक स्ट्रिंग चाहता है तो मुझे लगता है कि यह ठीक है। लेकिन यदि ओपी चाहता है {"JSON": "हैलो वर्ल्ड"} से ऑब्जेक्ट बनाने के लिए, वह 'jQuery.parseJSON (" यहां एक जेसन स्ट्रिंग ") का उपयोग कर सकता है;' –

0

आप अपने json में संपत्ति नाम से बोलियां बाहर करने के लिए निम्न विधि का उपयोग कर सकते हैं

5

मैं कुछ का सामना करना पड़ा वेब अनुप्रयोग/लाइब्रेरी जैसे कि एमएचएचटीएस जो JSScipt इनपुट जैसे जेएसओएन का समर्थन करते हैं, जहां आपका अनुरोध जरूरी है कि सही JSON समर्थित नहीं है।

आप क्या कर सकते हैं एक सामान्य जावास्क्रिप्ट फ़ंक्शन बनाते हैं और JSON फ़िल्टर करने के लिए थोड़ा RegEx का उपयोग करते हैं।

function CleanJSONQuotesOnKeys(json) { 
    return json.replace(/"(\w+)"\s*:/g, '$1:'); 
} 
संबंधित मुद्दे