আমি গুগল জিসনের মাধ্যমে একটি তালিকা বস্তু স্থানান্তর করতে চাই, তবে জেনেরিক প্রকারগুলি কীভাবে deserialize করা যায় তা আমি জানি না।
আমি কি এ খুঁজছেন পরে চেষ্টা এই (BalusC এর উত্তর):
MyClass mc = new Gson().fromJson(result, new List<MyClass>(){}.getClass());
তবে আমি গ্রহনের ক্ষেত্রে একটি ত্রুটি পেয়েছি "টাইপ নতুন তালিকার ({} অবশ্যই উত্তরাধিকারসূত্রে বিমূর্ত পদ্ধতিটি প্রয়োগ করতে হবে ..." এবং যদি আমি একটি দ্রুত ফিক্স ব্যবহার করি তবে আমি 20 টিরও বেশি পদ্ধতির স্টাবের দৈত্য পাব।
আমি আরও নিশ্চিত যে এর আরও সহজ সমাধান আছে তবে আমি এটি খুঁজে পেতে অক্ষম!
সম্পাদনা:
এখন আমার আছে
Type listType = new TypeToken<List<MyClass>>()
{
}.getType();
MyClass mc = new Gson().fromJson(result, listType);
যাইহোক, আমি "জেসন থেকে" লাইনে নিম্নলিখিত ব্যতিক্রমগুলি পাই:
java.lang.NullPointerException
at org.apache.harmony.luni.lang.reflect.ListOfTypes.length(ListOfTypes.java:47)
at org.apache.harmony.luni.lang.reflect.ImplForType.toString(ImplForType.java:83)
at java.lang.StringBuilder.append(StringBuilder.java:203)
at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:56)
at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:88)
at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:76)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:106)
at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49)
at com.google.gson.Gson.fromJson(Gson.java:568)
at com.google.gson.Gson.fromJson(Gson.java:515)
at com.google.gson.Gson.fromJson(Gson.java:484)
at com.google.gson.Gson.fromJson(Gson.java:434)
আমি কি করতে ধরা JsonParseExceptions এবং "RESULT" নাল নয়।
আমি ডিবাগারটির সাথে তালিকাটি টাইপ চেক করেছি এবং নিম্নলিখিতগুলি পেয়েছি:
- তালিকার প্রকার
- আরগস = লিস্টঅফটাইপস
- list = নাল
- সমাধানযুক্ত প্রকার = প্রকার [1]
- লোডার = PathClassLoader
- মালিকের টাইপ 0 = নাল
- মালিকের টাইপরেস = নাল
- কাঁচা টাইপ = শ্রেণি (java.util.ArrayList)
- RawTypeName = "java.util.ArrayList"
- আরগস = লিস্টঅফটাইপস
সুতরাং মনে হচ্ছে "getClass" অনুরোধটি সঠিকভাবে কাজ করে নি। কোন পরামর্শ...?
সম্পাদনা 2: আমি জিএসন ব্যবহারকারী নির্দেশিকাতে পরীক্ষা করেছি । এটি একটি রানটাইম ব্যতিক্রম উল্লেখ করেছে যা জসনকে জেনেরিক ধরণের পার্সিংয়ের সময় হওয়া উচিত। উদাহরণ হিসাবে যেমন আমি এটি "ভুল" করেছি (উপরে দেখানো হয়নি) তবে ব্যতিক্রমটি মোটেই পেলাম না। সুতরাং আমি ব্যবহারকারী নির্দেশিত অনুসারে সিরিয়ালাইজেশন পরিবর্তন করেছি। সাহায্য করেনি, যদিও।
সম্পাদনা 3: সমাধান হয়েছে, নীচে আমার উত্তর দেখুন।
TokenType
। আপনি কি সেভাবে চেষ্টা করেছেন?