আমার একটি জাভা ক্লাস রয়েছে MyPojoযা আমি জেএসএন থেকে ডিসিরিয়ালাইজেশন করতে আগ্রহী। Deserialization MyPojoDeMixInসম্পর্কে আমাকে সহায়তা করার জন্য, আমি একটি বিশেষ মিশ্রণ শ্রেণি কনফিগার করেছি । সঠিক getters এবং setters সঙ্গে মিলিত MyPojoশুধুমাত্র intএবং Stringউদাহরণ ভেরিয়েবল আছে। MyPojoDeMixInএরকম কিছু দেখাচ্ছে:
public abstract class MyPojoDeMixIn {
MyPojoDeMixIn(
@JsonProperty("JsonName1") int prop1,
@JsonProperty("JsonName2") int prop2,
@JsonProperty("JsonName3") String prop3) {}
}
আমার পরীক্ষার ক্লায়েন্টে আমি নিম্নলিখিতটি করি, তবে অবশ্যই এটি সংকলনের সময় কাজ করে না কারণ JsonMappingExceptionএকটি ধরণের অমিলের সাথে সম্পর্কিত।
ObjectMapper m = new ObjectMapper();
m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class);
try { ArrayList<MyPojo> arrayOfPojo = m.readValue(response, MyPojo.class); }
catch (Exception e) { System.out.println(e) }
আমি সচেতন যে আমি একটি "প্রতিক্রিয়া" অবজেক্ট তৈরি করে এই সমস্যাটিকে হ্রাস করতে পারলাম যার ArrayList<MyPojo>মধ্যে এটির মধ্যে কেবল একটিই রয়েছে , তবে তারপরে আমি যে সমস্ত টাইপটিতে ফিরে যেতে চাই তার জন্য এই কিছুটা বেহুদা বস্তু তৈরি করতে হবে।
আমি জ্যাকসনআইনফাইভমিনুটগুলিতে অনলাইনেও তাকিয়েছিলাম তবে এগুলি সম্পর্কে Map<A,B>এবং আমার সমস্যার সাথে কীভাবে সম্পর্কিত তা বোঝার জন্য ভয়াবহ সময় পেয়েছিলাম । যদি আপনি বলতে না পারেন তবে আমি জাভাতে সম্পূর্ণ নতুন এবং একটি ওজেজে-সি ব্যাকগ্রাউন্ড থেকে এসেছি। তারা বিশেষভাবে উল্লেখ:
POJOs এবং "সাধারণ" প্রকারের সাথে বাঁধনের পাশাপাশি আরও একটি বৈকল্পিক রয়েছে: জেনেরিক (টাইপযুক্ত) পাত্রে বাঁধাইয়ের। এই ক্ষেত্রে তথাকথিত টাইপ ইরেজারের কারণে (জাভা ব্যবহার করে কিছুটা পিছনের সামঞ্জস্যপূর্ণ উপায়ে জেনেরিকগুলি প্রয়োগ করতে) কারণে বিশেষ হ্যান্ডলিং দরকার যা আপনাকে কালেকশন ক্লাসের মতো কিছু ব্যবহার করতে বাধা দেয় (যা সংকলন করে না)।
সুতরাং আপনি যদি কোনও মানচিত্রে ডেটা বাঁধতে চান তবে আপনাকে এটি ব্যবহার করতে হবে:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
আমি কীভাবে সরাসরি ডিজিজারাইজ করতে পারি ArrayList?