/ / क्या @JsonIgnoreProperties (ignore अज्ञात = सत्य) सेट होने पर असमर्थित जेसन गुणों का पता लगाने का कोई तरीका है? - जेसन, आराम, वसंत-बूट, जैक्सन

क्या @JsonIgnoreProperties (ignore अज्ञात = सत्य) सेट होने पर असमर्थित जेसन गुणों का पता लगाने का कोई तरीका है? - जेसन, आराम, वसंत-बूट, जैक्सन

मुझे यह पता लगाने की आवश्यकता है कि PUT या POST अनुरोधों के बाद कौन से जेसन फ़ील्ड डेटा मॉडल में मैप नहीं किए गए हैं। उदाहरण के लिए: अगर मैं इसे पोस्ट करता हूं:

{
"firstName": "test",
"lastName": "test 2",
"age": 25
}

और मेरे मॉडल में केवल प्रथम नाम और अंतिम नाम है, मैं सभी अप्रयुक्त फ़ील्ड सूचीबद्ध करना चाहता हूं, जो इस उदाहरण में "आयु" फ़ील्ड है।

उत्तर:

उत्तर № 1 के लिए 1

हां, जैक्सन की एनोटेशन का उपयोग करना संभव है @JsonAnySetter

@JsonIgnoreProperties(ignoreUnknown = true)
public class DTO {
private String first;
private String last;
private Map<String, Object> unknown = new HashMap<>();

// getters/setters omitted

@JsonAnySetter
public void set(String name, Object value) {
unknown.put(name, value);
}

public Map<String, Object> getUnknown() {
return unknown;
}
}

सरल परीक्षण:

@Test
public void testUnknown() throws Exception {
String json = "{"first":"John", "last":"Doe", "age":"29"}";
DTO dto = new ObjectMapper().readValue(json, DTO.class);
assertEquals(1, dto.getUnknown().size());
assertEquals("29", dto.getUnknown().get("age"));
}

जवाब के लिए 2 № 2

यदि यह सिर्फ यह जानने के बारे में है कि कौन से गुण अनपढ़ हैं तो आप इस लाइब्रेरी का उपयोग करने पर विचार करना चाहेंगे: https://github.com/whiskeysierra/jackson-module-unknown-property यह क्लास को संशोधित करने की आवश्यकता के बिना सभी मैप किए गए वर्गों के लिए अप्रयुक्त गुण लॉग करता है।