के रूप में वापसी सूची मुझे टॉमकैट और ग्लासफ़िश पर चलते समय एक ही कोड चलाने वाली लौटाई गई सूची की जेसन संरचना में अंतर का सामना करना पड़ रहा है।जर्सी आराम सर्वर - जेसन
@XmlRootElement
public Class Person {
private int personId;
private String name;
}
@GET
@Path("/persons")
public Response getPersons()
{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(1, "John Smith"));
persons.add(new Person(2, "Jane Smith"));
GenericEntity<List<Person>> entity = new GenericEntity<List<Person>>(Lists.newArrayList<persons)) {};
Return Response.ok(entity).build();
}
तो बिल्ला पर json प्रारूप (मैं स्थानीय मशीन पर बिलाव चल रहा हूँ) में लौट आए परिणाम होगा:
[
{
"personId" : "1",
"name" : "John Smith"
},
{
"personId" : "2",
"name" : "Jane Smith"
}
]
और अगर Glassfish पर json प्रारूप में लौट आए (दूरस्थ सर्वर पर Glassfish चल) परिणाम होगा:
{
"person" :
[
{
"personId" : "1",
"name" : "John Smith"
},
{
"personId" : "2",
"name" : "Jane Smith"
}
]
}
मैं इस प्रारूप को अपने स्वयं कैसे नियंत्रित कर सकता हूं? यदि संभव हो तो मैं सरणी प्रारूप (टॉमकैट पर) पसंद करूंगा। किसी भी तरह से मैं इसे एक ही परिणाम का उत्पादन करना चाहता हूं।
संपादित करें:
निर्भरता: जर्सी-कंटेनर-सर्वलेट (2.14), जर्सी-सर्वर (2.14), जर्सी-मीडिया-Moxy (2.14), javax.servlet-api (3.0.1)
Glassfish के संस्करण: 3.1.2.2 (निर्माण 5)
संपादित करें 2: यह जर्सी 2.14 और Glassfish 3.x
मैं जूस साथ एक समस्या है टी ग्लासफ़िश 3 और 4 स्थापित नहीं किया और प्रतिक्रिया की जांच करने के लिए बाकी ऐप को तैनात किया। सूची लौटने पर इसके परिणामस्वरूप विभिन्न जेसन संरचना हुई। ग्लासफ़िश 4 की प्रतिक्रिया टॉमकैट पर चलने के परिणाम के समान थी।
आप 'GenericEntity' का उपयोग किए बिना' List' से सीधे 'Response' का निर्माण करने की कोशिश की है? –
मैंने कोशिश की है लेकिन यह काम नहीं करता है: SEVERE: MessageBodyWriter मीडिया प्रकार = एप्लिकेशन/जेसन के लिए नहीं मिला, टाइप = क्लास java.util.ArrayList, जेनेरिक टाइप = क्लास java.util.ArrayList। – sjallamander
कृपया अपनी निर्भरताएं पोस्ट करें और किस ग्लासफ़िश के साथ आप काम कर रहे हैं। –