हां, जेएसओएन के मध्यवर्ती रूपांतरण से बचने के लिए यह निश्चित रूप से संभव है। Dozer जैसे गहरे प्रतिलिपि टूल का उपयोग करके आप मानचित्र को सीधे पीओजेओ में बदल सकते हैं। यहाँ एक साधारण उदाहरण है:
उदाहरण POJO:
public class MyPojo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String name;
private Integer age;
private Double savings;
public MyPojo() {
super();
}
// Getters/setters
@Override
public String toString() {
return String.format(
"MyPojo[id = %s, name = %s, age = %s, savings = %s]", getId(),
getName(), getAge(), getSavings());
}
}
नमूना रूपांतरण कोड:
public class CopyTest {
@Test
public void testCopyMapToPOJO() throws Exception {
final Map<String, String> map = new HashMap<String, String>(4);
map.put("id", "5");
map.put("name", "Bob");
map.put("age", "23");
map.put("savings", "2500.39");
map.put("extra", "foo");
final DozerBeanMapper mapper = new DozerBeanMapper();
final MyPojo pojo = mapper.map(map, MyPojo.class);
System.out.println(pojo);
}
}
आउटपुट:
MyPojo [id = 5, नाम = बॉब, उम्र = 23, बचत = 2500.3 9]
नोट: यदि आप अपना स्रोत मानचित्र Map<String, Object>
पर बदलते हैं तो आप मनमाने ढंग से गहरी घोंसले वाली संपत्तियों पर प्रतिलिपि बना सकते हैं (Map<String, String>
के साथ आपको केवल एक स्तर मिलता है)।
क्या आप इस पुस्तकालय के लिए ग्रेडल कमांड प्रदान कर सकते हैं? –
आपको ऑब्जेक्टमैपर 'compile' com.fasterxml.jackson.core का उपयोग करने के लिए इस लाइब्रेरी को शामिल करने की आवश्यकता है: जैक्सन-डाटाबेस: 2.7.3'' –
कन्वर्ट का उपयोग करना वैल्यू सही उत्तर है, लेकिन हर बार ऑब्जेक्टमैपर उदाहरण न बनाएं। इसे बनाना और थ्रेड-सुरक्षित बनाना महंगा है, इसलिए इसे बनाएं और इसे कहीं कैश करें। – glade