में मॉडल वर्गों से सीधे वस्तुओं मैं कुछ मॉडल वर्गों Customer
की तरह, Product
, आदि अपने प्रोजेक्ट जो कई क्षेत्रों और उनके सेटर-गेटर तरीकों में है, मैं एक JSONObject के रूप में इन वर्गों के विनिमय वस्तुओं की जरूरत है क्लाइंट और सर्वर से और सॉकेट के माध्यम से।बनाना JSON जावा
क्या कोई तरीका है कि मैं मॉडल श्रेणी के ऑब्जेक्ट से सीधे JSONObject
बना सकता हूं जैसे ऑब्जेक्ट के फ़ील्ड कुंजी बन जाते हैं और उस मॉडल क्लास ऑब्जेक्ट के मान इस JSONObject के मान बन जाते हैं।
उदाहरण:
Customer c = new Customer();
c.setName("Foo Bar");
c.setCity("Atlantis");
.....
/* More such setters and corresponding getters when I need the values */
.....
और मैं JSON वस्तु बनाने के रूप में:
JSONObject jsonc = new JSONObject(c); //I'll use this only once I'm done setting all values.
कौन सा मेरे जैसे कुछ हो जाता है:
{"name":"Foo Bar","city":"Atlantis"...}
कृपया ध्यान दें कि, मेरे मॉडल वर्गों में से कुछ में , कुछ गुण स्वयं अन्य मॉडल वर्ग का एक ऑब्जेक्ट हैं । जैसे:
Product p = new Product();
p.setName("FooBar Cookies");
p.setProductType("Food");
c.setBoughtProduct(p);
से ऊपर, के रूप में मैं उम्मीद थी की तरह एक मामले में, झुकेंगे JSON ऑब्जेक्ट होगा:
{"name":"Foo Bar","city":"Atlantis","bought":{"productname":"FooBar Cookies","producttype":"food"}}
मैं जानता हूँ कि मैं एक मॉडल कक्षा में toJSONString()
की तरह कुछ बना सकते हैं और है JSON- अनुकूल स्ट्रिंग ने तब बनाया और इसका उपयोग किया, लेकिन जावा में रीस्टफुल सेवा बनाने के अपने पिछले अनुभवों में (जो इस प्रश्न के संदर्भ में पूरी तरह से बाहर है), मैं @Produces(MediaType.APPLICATION_JSON)
का उपयोग करके सेवा विधि से जेएसओएन स्ट्रिंग वापस कर सकता हूं और विधि मॉडल वर्ग की वापसी वस्तु। इसलिए यह JSON स्ट्रिंग का उत्पादन करता है जिसे मैं क्लाइंट एंड पर उपभोग कर सकता हूं।
मैं सोच रहा था कि वर्तमान परिदृश्य में समान व्यवहार प्राप्त करना संभव है या नहीं।
कोई मदद या सुझाव की सराहना की है। धन्यवाद।
मैं json.org लाइब्रेरी से 'JSONObject' पर निर्भर हूं, तो क्या मुझे इसके लिए सिर्फ एक और लाइब्रेरी का उपयोग करना है? – Kushal
जीएसओएन एन्कोडिंग और डिकोडिंग दोनों कर सकता है, इसलिए आप json.org को छोड़ सकते हैं और इसके बजाए बस जीएसओएन का उपयोग कर सकते हैं। –
इसके अलावा, मैं '@XMLElement (नाम =" somekeyname ")' मॉडल वर्गों में से प्राप्त तरीकों में मेरे बाकी सेवा बात में, keynames को नियंत्रित इसे यहाँ भी काम करेगा करने के लिए इस्तेमाल? – Kushal