युक्त एक-तत्व शब्दकोशों की एक सरणी मिलती है, मैं एक परियोजना पर काम कर रहा हूं जो वस्तुओं को जेएसओएन में परिवर्तित करने के लिए जर्सी का उपयोग करता है। मैं, नेस्टेड सूचियों को लिखने के लिए सक्षम होने के लिए तो जैसे चाहते हैं:मैं जर्सी का उपयोग कर जेएसओएन के रूप में मार्शल नेस्टेड सूचियां कैसे करूं? मुझे एक सरणी या सरणी
{"data":[["one", "two", "three"], ["a", "b", "c"]]}
वस्तु मैं पहली बार कन्वर्ट करने के लिए एक < LinkedList < LinkedList < स्ट्रिंग > > > के रूप में डेटा का प्रतिनिधित्व करना चाहते हैं, और मैं जर्सी लगा सिर्फ सही काम करेगा। ऊपर nulls की एक सूची के रूप में उत्पादन किया गया था:
{"data":[null, null]}
पढ़ने कि नेस्टेड वस्तुओं लिपटे होने की जरूरत है के बाद, मैं करने की कोशिश की है:
@XmlRootElement(name = "foo")
@XmlType(propOrder = {"data"})
public class Foo
{
private Collection<FooData> data = new LinkedList<FooData>();
@XmlElement(name = "data")
public Collection<FooData> getData()
{
return data;
}
public void addData(Collection data)
{
FooData d = new FooData();
for(Object o: data)
{
d.getData().add(o == null ? (String)o : o.toString());
}
this.data.add(d);
}
@XmlRootElement(name = "FooData")
public static class FooData
{
private Collection<String> data = new LinkedList<String>();
@XmlElement
public Collection<String> getData()
{
return data;
}
}
}
कि कोड आउटपुट क्या, नीचे दिए गए है जो के करीब है क्या मैं चाहता हूं:
{"data":[{"data":["one", "two", "three"]},{"data":["a", "b", "c"]}]}
मैं चाहता हूं कि पहला डेटा सूचियों की सूची हो, न कि एक-तत्व शब्दकोशों की सूची। मुझे यह कैसे हासिल होगा?
यहाँ मेरी JAXBContentResolver है:
@Provider
public class JAXBContextResolver implements ContextResolver<JAXBContext>
{
private JAXBContext context;
private Set<Class<?>> types;
// Only parent classes are required here. Nested classes are implicit.
protected Class<?>[] classTypes = new Class[] {Foo.class};
protected Set<String> jsonArray = new HashSet<String>(1) {
{
add("data");
}
};
public JAXBContextResolver() throws Exception
{
Map<String, Object> props = new HashMap<String, Object>();
props.put(JSONJAXBContext.JSON_NOTATION, JSONJAXBContext.JSONNotation.MAPPED);
props.put(JSONJAXBContext.JSON_ROOT_UNWRAPPING, Boolean.TRUE);
props.put(JSONJAXBContext.JSON_ARRAYS, jsonArray);
this.types = new HashSet<Class<?>>(Arrays.asList(classTypes));
this.context = new JSONJAXBContext(classTyes, props);
}
public JAXBContext getContext(Class<?> objectType)
{
return (types.contains(objectType)) ? context : null;
}
}
ठीक है, मैंने अभी अनुमान लगाया है कि आपका मामला मुझसे अधिक जटिल था हालांकि ... – Arnaudweb