2011-11-15 21 views
6

के साथ जावा एक्सस्ट्रीम मैं जावा हैश को जेसन हैश में बदलने के लिए एक्सस्ट्रीम का उपयोग करना चाहता हूं। मुझे लगता है कि ऐसा लगता है कि यह आसान होना चाहिए। क्या मैं तलाश कर रहा हूँ बनाने के लिए एक तरीका है:हैश मैप

Map<String, String> map = new HashMap<String, String>(); 
map.put("first", "value1"); 
map.put("second", "value2"); 

{'first' : 'value1', 'second' : 'value2' } 

बन बंद कर देता है मेरे पास है सरणियों की एक श्रृंखला में बदल।

XStream xstream = new XStream(new JettisonMappedXmlDriver() { 
    public HierarchicalStreamWriter createWriter(Writer writer) { 
     return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); 
    } 
}); 

xstream.toXML(map); 

जो

[["first", "value1"], ["second", "value2"]] 

हो जाता है मैं json हैश करने के लिए एक जावा हैश परिवर्तित सीधे आगे होना चाहिए की तरह लग रहा है। क्या मैं कुछ भूल रहा हूँ?

+1

हो सकता है यदि आप किसी अन्य lib चुन सकते हैं http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html को देखें। – Jason

उत्तर

0

जेएसओएन में कनवर्ट करते समय मुझे इसी तरह के मुद्दे थे। इस समस्या का मेरा समाधान था कि फ़ाइल में ड्रॉप करने से पहले स्ट्रिंग पहले से जेएसओएन पर स्वरूपित हो (मेरे मामले में डेटाबेस में)। अब तक की सबसे कुशल प्रक्रिया आई है जो मेरी कक्षाओं के अंदर एक टॉज़न फ़ंक्शन बनाने के लिए बस स्ट्रिंग की तरह काम करती है।

उदाहरण:

JSON प्रारूप में वस्तुओं डेटा उत्पादन स्ट्रिंग

public JsonObject toJson() 
    { 

     JsonObject temp = new JsonObject(); 
     temp.addProperty(tagName,floatData); 
     return temp; 
    } 

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

1

बात यह है कि XStream सबसे पहले और सबसे प्रमुख मार्शल और अनारशल जावा ऑब्जेक्ट्स को एक्सएमएल में डिज़ाइन किया गया है, जेएसओएन सिर्फ एक विचारधारा है, यह निश्चित रूप से कम से कम सुरुचिपूर्ण समर्थन है।

तकनीकी समस्या यह है कि एक्सस्ट्रीम को एक्सएमएल और जेएसओएन प्रारूपों का समर्थन करना चाहिए, जेएसओएन मानचित्र प्रतिनिधित्व पीड़ित है, क्योंकि XML में मानचित्र जैसी संरचनाओं का प्रतिनिधित्व करने का कोई मूल तरीका नहीं है।

0

आप json.org से जावा के लिए "आधिकारिक" जेसन लिब का उपयोग करने का प्रयास कर सकते हैं।

कॉलिंग:

JSONObject jsobj = new JSONObject(map); 
String strJson = jsobj.toString(); 
संबंधित मुद्दे