2016-06-22 9 views
5

पर पार्स नहीं कर सकता है, मैं HashSet<String> को JSONObject में कनवर्ट करने का प्रयास कर रहा हूं और फिर आउटपुट JSON को पार्स कर सकता हूं।हैशसेट को JSONObject स्ट्रिंग

JSONObject json = new JSONObject(); 
json.put("set", new HashSet<>(Arrays.asList("a", "b"))); 
json.put("list", Arrays.asList("a", "b")); 
String jsonString = json.toJSONString(); 

System.out.println(jsonString); 

JSONParser parser = new JSONParser(); 
JSONObject afterParse = (JSONObject) parser.parse(jsonString); 
System.out.println(afterParse.toJSONString()); 

लेकिन यह मुझे इस उत्पादन और त्रुटि दे रही है:

{"set":[b, a],"list":["a","b"]} 
Exception in thread "main" Unexpected character (b) at position 8. 

यहाँ, आप दोनों ए और बी तार कर रहे हैं देख सकते हैं दोनों सूची में,

यहाँ मैं क्या कोशिश की है है दोहरे उद्धरण चिह्नों के अंदर हैं लेकिन सेट में यह नहीं है।

मैं org.json.simple v1.1 का उपयोग कर रहा हूं।

+0

आप अपने HashSet बनाने के लिए प्रयास किया था हैशसेट के रूप में? मुझे लगता है कि यह समस्या का समाधान नहीं करेगा, लेकिन परीक्षण के लायक है। –

+0

मैंने हैशसेट का उपयोग करने का प्रयास किया है लेकिन आउटपुट –

+1

है जब मैंने पैकेज को 'org.json.JSONObject' में बदल दिया, वही कोड काम करता है। सुनिश्चित नहीं है कि यह org.json.simple में एक बग हो सकता है। – Ravikumar

उत्तर

1

मुझे लगता है कि इस org.json.simple पुस्तकालय के साथ एक समस्या है।

मैं org.json पुस्तकालय का इस्तेमाल किया है, और इसके बाद के संस्करण कोड में कुछ मामूली परिवर्तन करना है काम करने के लिए:

JSONObject json = new JSONObject(); 
json.put("set", new HashSet<>(Arrays.asList("a", "b"))); 
json.put("list", Arrays.asList("a", "b")); 
String jsonString = json.toString(); 

System.out.println(jsonString); 

JSONObject afterParse = new JSONObject(jsonString); 
System.out.println(afterParse.toString()); 

इस कोड के उत्पादन में है:

{"set":["a","b"],"list":["a","b"]} 
1

जब आप तारों की एक सरणी को सूची में परिवर्तित करते हैं और फिर सूची में सूची को परिवर्तित करते हैं, तो यह अब स्ट्रिंग नहीं है, लेकिन ऑब्जेक्ट्स की एक सरणी इसलिए नई हैशसेट <> (Arrays.asList ("a", "b"))); "सेट" देता है: [बी, ए] (उद्धरण के बिना)। और पार्सर.परसे (जेसनस्ट्रिंग); ऑब्जेक्ट्स पर ऑब्जेक्ट की सरणी पर काम करता है।

नीचे के रूप में एक सेट के बजाय एक सूची का उपयोग कर प्रयास करें:

json.put("set", new Arraylist<>(new HashSet<>(Arrays.asList("a", "b")))); 
+0

मुझे पता है कि अगर मैं सेट सूची में कनवर्ट करता हूं यह काम करेगा। लेकिन मैं हैशसेट को जेएसओएन में सीधे –

+0

@ आश्राफुल इस्लाम को परिवर्तित करना चाहता था, जो हैशसेट को परिवर्तित करता है जो जेसन के लिए एक संग्रह है जो जेसन सरल पार्स विधि के साथ त्रुटि देगा। सूची जैसी वस्तु का उपयोग करना सौदा करेगा। – mattymanme

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