জ্যাকসনে আমার কাস্টম ডিসরিয়ালাইজারে আমার একটি সমস্যা আছে। আমি যে ডিভাইসটি ডিসরিয়ালাইজ করছি তাতে পপুলেট করার জন্য আমি ডিফল্ট সিরিয়ালটিকে অ্যাক্সেস করতে চাই। জনসংখ্যার পরে আমি কিছু কাস্টম জিনিস করব তবে প্রথমে আমি ডিফল্ট জ্যাকসন আচরণের মাধ্যমে অবজেক্টটির ডিসিসিয়ালাইজ করতে চাই।
এই মুহুর্তে আমার এই কোডটি।
public class UserEventDeserializer extends StdDeserializer<User> {
private static final long serialVersionUID = 7923585097068641765L;
public UserEventDeserializer() {
super(User.class);
}
@Override
@Transactional
public User deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
User deserializedUser = null;
deserializedUser = super.deserialize(jp, ctxt, new User());
// The previous line generates an exception java.lang.UnsupportedOperationException
// Because there is no implementation of the deserializer.
// I want a way to access the default spring deserializer for my User class.
// How can I do that?
//Special logic
return deserializedUser;
}
}
আমার যা প্রয়োজন তা হ'ল ডিফল্ট ডিসরিয়ালাইজারকে আরম্ভ করার একটি উপায় যাতে আমি আমার বিশেষ যুক্তি শুরু করার আগে আমার পজোকে প্রাক-জনবসতি করতে পারি।
কাস্টম ডিসরিয়ালাইজারের মধ্যে থেকে ডিসিরিজাল কল করার সময় মনে হয় পদ্ধতিটি বর্তমান প্রসঙ্গ থেকে বলা হয়েছিল আমি সিরিয়ালাইজার শ্রেণি যেভাবেই নির্মাণ করি না কেন। আমার পোষ্টোতে টীকা দেওয়ার কারণে। এটি সুস্পষ্ট কারণে স্ট্যাক ওভারফ্লো ব্যতিক্রম ঘটায়।
আমি একটি সূচনা করার চেষ্টা করেছি BeanDeserializer
তবে প্রক্রিয়াটি অত্যন্ত জটিল এবং এটি করার সঠিক উপায়টি আমি খুঁজে পেতে সক্ষম হইনি। আমি AnnotationIntrospector
এটিতে কোনও লাভও ওভারলোড করার চেষ্টা করেছিলাম না, ভেবেছিলাম যে এটি আমাকে এর মধ্যে থাকা টীকাকে উপেক্ষা করতে সহায়তা করতে পারে DeserializerContext
। অবশেষে এটি seams আমি ব্যবহার করে কিছুটা সাফল্য JsonDeserializerBuilders
পেয়েছি যদিও এটি আমাকে বসন্ত থেকে অ্যাপ্লিকেশন প্রসঙ্গে ধরে রাখতে কিছু যাদু স্টাফ করার প্রয়োজন ছিল। আমি এমন কোনও জিনিসের প্রশংসা করব যা আমাকে ক্লিনার সমাধানের দিকে নিয়ে যেতে পারে উদাহরণস্বরূপ আমি JsonDeserializer
টীকাটি না পড়ে কীভাবে deserialization প্রসঙ্গটি তৈরি করতে পারি ।
DeserializationContext
আপনি তৈরি বা পরিবর্তন করা উচিত এমন কিছু নয়; এটি সরবরাহ করা হবেObjectMapper
।AnnotationIntrospector
একইভাবে, অ্যাক্সেস পেতে সাহায্য করবে না।