জ্যাকসন 2.5 থেকে, সমাধানের একটি মার্জিত উপায় যা
টাইপফ্যাক্ট্রি.কমস্ট্রাক্ট প্যারামেট্রিক টাইপ (ক্লাস প্যারামেট্রাইজড, ক্লাস ... প্যারামিটার ক্লাস) পদ্ধতি ব্যবহার করে যা একটি জ্যাকসনকে স্ট্র্যাথলি সংজ্ঞায়িত করতে দেয়JavaType
করে যা প্যারামিটারাইজড ক্লাস এবং তার প্যারামিটারাইজড নির্দিষ্ট করে ।
ধরুন আপনি ডিসরিয়ালাইজ করতে চান Data<String>
, আপনি এটি করতে পারেন:
// the json variable may be a String, an InputStream and so for...
JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, String.class);
Data<String> data = mapper.readValue(json, type);
মনে রাখবেন যে ক্লাসটি একাধিক প্যারামিটারাইজড প্রকারগুলি ঘোষণা করে, এটি সত্যিই শক্ত হবে না:
class Data <T, U> {
int found;
Class<T> hits;
List<U> list;
}
আমরা করতে পারি:
JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, String.class, Integer);
Data<String, Integer> data = mapper.readValue(json, type);