असल में आपको एक एक्सएमएल एडाप्टर की आवश्यकता है। आप जिस विशिष्ट आउटपुट को चाहते हैं उसे प्राप्त करने के लिए आप KeyValue क्लास के नामों के साथ बेवकूफ़ बना सकते हैं।
Parameter.java
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.Map;
@XmlRootElement(name = "data")
@XmlAccessorType(XmlAccessType.FIELD)
public class Parameters {
@XmlJavaTypeAdapter(value = Adapter.class)
private Map<String, String> parametersMap;
// Getter and setter for parametersMap
}
Adapter.java
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Adapter extends XmlAdapter<List<KeyValue>, Map<String, String>> {
@Override
public Map<String, String> unmarshal(List<KeyValue> v) throws Exception {
Map<String, String> map = new HashMap<>(v.size());
for (KeyValue keyValue : v) {
map.put(keyValue.key, keyValue.value);
}
return map;
}
@Override
public List<KeyValue> marshal(Map<String, String> v) throws Exception {
Set<String> keys = v.keySet();
List<KeyValue> results = new ArrayList<>(v.size());
for (String key : keys) {
results.add(new KeyValue(key, v.get(key)));
}
return results;
}
}
KeyValue.java बेहतर JAXB टैग यहाँ रखो, जाहिर है।
import javax.xml.bind.annotation.XmlType;
@XmlType
public class KeyValue {
public KeyValue() {
}
public KeyValue(String key, String value) {
this.key = key;
this.value = value;
}
//obviously needs setters/getters
String key;
String value;
}
एक अलग पोस्ट से मैंने अभी सीखा है कि * जर्सी * (पुनः) * जेएक्सबी * एनोटेशन का उपयोग करता है। http://stackoverflow.com/questions/1261593/binding-a-json-to-a-java-class-using-jaxb –
हां, जेएक्सबी एक्सएमएल बाइंडिंग के लिए है लेकिन इसका उपयोग जावा ऑब्जेक्ट्स में JSON इनपुट को बाध्य करने के लिए भी किया जा सकता है जर्सी के साथ मिलकर। – ovunccetin
एक्लिप्ससेंक जेएक्सबी (MOXy) जेएसओएन बाध्यकारी जेएक्सबी एनोटेशन का लाभ उठाने की पेशकश भी करता है: http://blog.bdoughan.com/2011/08/json-binding-with-eclipselink-moxy.html –