मैं जैक्सन का उपयोग कर जावा POJO में JSON deserialize करने की कोशिश कर रहा हूँ। दूर गोपनीय जानकारी दिए बिना, यहां एक उदाहरण स्टैक ट्रेस है जब ObjectMapper के अक्रमांकन विफल रहता है:जैक्सन एक एनम कुंजी के साथ मानचित्र में deserializing, POJO मूल्य
org.codehaus.jackson.map.JsonMappingException: Can not construct Map key of type com.example.MyEnum from String "coins": not a valid representation: Can not construct Map key of type com.example.MyEnum from String "coins": not one of values for Enum class
मेरे JSON इस तरह दिखता है:
"foo": {
"coins": null,
...
}
और वर्ग मैं में deserialize करना चाहते हैं तो इस क्षेत्र में है:
private Map<MyEnum, MyPojo> foo;
और मेरी enum प्रकार इस तरह दिखता है:
public enum MyEnum {
COINS("coins"),
...
}
मुझे एहसास है कि मैं एक शून्य मूल्य deserialize करने की कोशिश कर रहा हूँ। लेकिन मेरा मानना है कि यह अभी भी काम करना चाहिए: deserialization का परिणाम foo.put(MyEnum.COINS, null)
के साथ एक नक्शा रखने के बराबर होना चाहिए, जो वास्तव में एक वैध जावा निर्देश है। सहायता बहुत सराहना की है, अग्रिम धन्यवाद।
अपने गणन कक्षा में एक स्थिर कारखाने विधि है कि स्ट्रिंग – hoaz
द्वारा enum निर्माण करती है और जारी करने के लिए कारण यह है कि डिफ़ॉल्ट रूप से जैक्सन 'enum.name() का उपयोग करता है प्रदान करते हैं' आईडी के रूप में - और इस मामले में, नाम है "कोन्स", लो-केस "सिक्के" नहीं। उत्तर के रूप में, इसके आसपास के तरीके हैं। – StaxMan