मैं जर्सी का उपयोग कर एक आरईएसटी सेवा लिख रहा हूं। ,@JsonTypeInfo (उपयोग = JsonTypeInfo.Id.CLASS) प्रतिक्रिया वापस लौटने पर काम नहीं कर रहा है
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
कि के लिए धन्यवाद जब मैं वस्तुओं की एक सूची लौट:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("promotions/")
public List<Promotion> getClosestPromotions() {
List<Promotion> promotions = getPromotions(); //here I get some objects
return promotions;
}
मैं के लिए एक "@class" क्षेत्र के साथ JSON स्ट्रिंग मिल रहा एक अमूर्त वर्ग संवर्धन एक एनोटेशन है कि है उस सूची में हर वस्तु। लेकिन समस्या यह है कि अगर मैं एक रिस्पांस वापसी:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("promotions/")
public Response getClosestPromotions() {
List<Promotion> promotions = getPromotions(); //here I get some objects
return Response.ok().entity(promotions).build();
}
मैं लगभग एक ही सूची हो रही है, लेकिन बिना अतिरिक्त "@class" क्षेत्र। प्रतिक्रिया में एक सूची लौटने पर "@class" फ़ील्ड के साथ सूची प्राप्त करने के लिए मैं और क्या कर सकता हूं? और वैसे, आश्चर्यजनक रूप से, यह तब काम करता है जब मैं केवल एक इकाई के रूप में दिए गए एक प्रोमोशन ऑब्जेक्ट के साथ प्रतिक्रिया देता हूं और मुझे वह "@class" फ़ील्ड मिलता है।
मैं अभी तक लेकिन एक जवाब के लिए पर्याप्त नहीं है। इकाई विधि किसी ऑब्जेक्ट को स्वीकार करती है। अंतर्निहित कोड शायद प्रकार की जानकारी पुनर्प्राप्त करने के लिए रनटाइम पर प्रकार का निरीक्षण करता है। दुर्भाग्यवश यह सूची तक पहुंच जाएगा और सूची नहीं होगी। यह इसे सामान्य प्रकार की जानकारी के बिना एक सूची के रूप में लिखता है, इसलिए आप कक्षा क्षेत्र को खो देंगे। किसी ऑब्जेक्ट को लिखना जिसमें सदस्य चर के रूप में सूची है, शायद काम करेगी लेकिन मैं कुछ क्लीनर के साथ आने की कोशिश कर रहा हूं। –