2012-11-27 8 views
15

मैं पहली बार एक वेब सेवा लिख ​​रहा हूं। मैंने Jersey पर आधारित एक विश्वसनीय वेब सेवा बनाई है। और मैं JSON का उत्पादन करना चाहता हूं। मेरी वेब सेवा के सही JSON प्रकार को उत्पन्न करने के लिए मुझे क्या करने की ज़रूरत है?रीस्टफुल वेब सेवा द्वारा JSON का सही ढंग से उत्पादन कैसे करें?

यहाँ मेरी विधियों में से एक है:

@GET 
@Path("/friends") 
@Produces("application/json") 
public String getFriends() { 
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}"; 
} 

यह है कि मैं बस मेरी विधि के लिए एनोटेशन @Produces("application/json") का कहना पर्याप्त है? तो यह विधि किसी भी प्रकार की वस्तु वापस कर सकती है? या केवल स्ट्रिंग? क्या मुझे इन वस्तुओं के अतिरिक्त प्रसंस्करण या परिवर्तन की आवश्यकता है?

कृपया इन मुद्दों से निपटने के लिए शुरुआत करने वाले के रूप में मेरी मदद करें। अग्रिम में धन्यवाद!

उत्तर

25

आप अपने बीन को जैक्सबी एनोटेशन के साथ एनोटेट कर सकते हैं।

@XmlRootElement 
    public class MyJaxbBean { 
    public String name; 
    public int age; 

    public MyJaxbBean() {} // JAXB needs this 

    public MyJaxbBean(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 
    } 

और फिर अपने विधि इस प्रकार दिखाई देगा:

@GET @Produces("application/json") 
    public MyJaxbBean getMyBean() { 
     return new MyJaxbBean("Agamemnon", 32); 
    } 

ताज़ा दस्तावेज़ों में एक अध्याय है कि इस के साथ संबंधित है:

https://jersey.java.net/documentation/latest/user-guide.html#json

+0

नो-पैरा कन्स्ट्रक्टर भाग को इंगित करने के लिए धन्यवाद। यह महत्वपूर्ण था! – simplysiby

5

आप एक पैकेज इस्तेमाल कर सकते हैं जैसे org.json http://www.json.org/java/

क्योंकि आपको JSONObjects का अधिक बार उपयोग करने की आवश्यकता होगी।

वहाँ आप आसानी से JSONObjects बना सकते हैं और यह कुछ मूल्य डाल सकते हैं:

JSONObject json = new JSONObject(); 
JSONArray array=new JSONArray(); 
    array.put("1"); 
    array.put("2"); 
    json.put("friends", array); 

    System.out.println(json.toString(2)); 


    {"friends": [ 
     "1", 
     "2" 
    ]} 

संपादित यह लाभ है कि आप विभिन्न परतों में आपकी प्रतिक्रियाओं का निर्माण और उन्हें एक वस्तु

0

के रूप में वापसी कर सकते हैं यह व्याख्या का प्रयोग करें

@RequestMapping(value = "/url", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE}) 
+0

क्या यह एक वसंत एनोटेशन नहीं है? मुझे नहीं लगता कि यह मान्य है। – Entomo

+0

ओपी स्पष्ट है: _ "मैंने ** जर्सी ** के आधार पर एक विश्वसनीय वेब सेवा बनाई है।" _ 'गेटमैपिंग' एनोटेशन जर्सी एपीआई का हिस्सा नहीं है। यह एक वसंत एमवीसी एनोटेशन है। –

2
@GET 
@Path("/friends") 
@Produces(MediaType.APPLICATION_JSON) 
public String getFriends() { 

    // here you can return any bean also it will automatically convert into json 
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}"; 
} 
+3

'@Produces (" application/json ")' @Produces (MediaType.APPLICATION_JSON) 'से भिन्न कैसे है? –

+1

यह वही बात है। 'MediaType.APPLICATION_JSON' एक स्थिर है जिसका मान' application/json' के बराबर है। निरंतर उपयोग करना कम त्रुटि-प्रवण है इसलिए बेहतर विकल्प – Adrien

1
@POST 
@Path ("Employee") 
@Consumes("application/json") 
@Produces("application/json") 
public JSONObject postEmployee(JSONObject jsonObject)throws Exception{ 
    return jsonObject; 
}  
संबंधित मुद्दे