ডিসিরিয়ালাইজ করার সময়, একটি Gson একটি JSON অবজেক্ট আশা করতে পারে কিন্তু এটি একটি JSON অ্যারে খুঁজে পেতে পারে। যেহেতু এটি একটি থেকে অন্যটিতে রূপান্তর করতে পারে না, এটি "JsonSyntaxException:java.lang.IllegalStateException:প্রত্যাশিত BEGIN_OBJECT কিন্তু BEGIN_ARRAY হিসাবে একটি ত্রুটি নিক্ষেপ করতে পারে " রানটাইমে৷
৷উদাহরণ
import com.google.gson.Gson;public class GsonErrorTest { পাবলিক স্ট্যাটিক ভ্যায়েড মেইন(স্ট্রিং আর্গস[]) ব্যতিক্রম নিক্ষেপ করে { স্ট্রিং json ="{\"কর্মচারী\":[{\"name\":\" রাজা রমেশ\", \"প্রযুক্তি\":\"জাভা\"}]}"; Gson gson =new Gson(); সফটওয়্যার সফটওয়্যার =gson.fromJson(json, Software.class); System.out.println(সফ্টওয়্যার); }}শ্রেণি সফ্টওয়্যার { কর্মচারী কর্মচারী;}শ্রেণি কর্মচারী { স্ট্রিং নাম; স্ট্রিং প্রযুক্তি;
আউটপুট
"প্রধান" থ্রেডে ব্যতিক্রম com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:প্রত্যাশিত BEGIN_OBJECT কিন্তু BEGIN_ARRAY লাইন 1 কলাম 14 এ ছিল .gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)এ com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(Reflective.gson.google.com.com.google.com.17) fromJson(Gson.java:795)এ com.google.gson.Gson.fromJson(Gson.java:761)এ com.google.gson.Gson.fromJson(Gson.java:710)এ com.google.gson.Gson থেকে (JsonReader.java:339)com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)এ com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$ এ Adapter.read(ReflectiveTypeAdapterFactory.java:165)
আমাদের পরিবর্তন করে এটি সমাধান করতে হবে৷ POJO টাইপ aসংগ্রহ বা অ্যারে টাইপ। নীচের উদাহরণে, আমরা একটি তালিকা ব্যবহার করতে পারি আমাদের POJO ক্লাসে সংগ্রহ।
উদাহরণ
import java.util.List;import com.google.gson.Gson;public class GsonListTest { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস[]) ব্যতিক্রম নিক্ষেপ করে { স্ট্রিং jsonString ="{\"কর্মচারী":[{\ "নাম\":\"রাজা রমেশ\", \"প্রযুক্তি\":\"জাভা\"}]}"; Gson gson =new Gson(); সফটওয়্যার সফটওয়্যার =gson.fromJson(jsonString, Software.class); System.out.println(সফ্টওয়্যার); }}শ্রেণীর সফ্টওয়্যার { তালিকাকর্মচারী; @ওভাররাইড পাবলিক স্ট্রিং টু স্ট্রিং() { রিটার্ন "সফ্টওয়্যার [কর্মচারি=" + কর্মচারী + "]"; }}শ্রেণীর কর্মচারী { স্ট্রিং নাম; স্ট্রিং প্রযুক্তি; @ওভাররাইড পাবলিক স্ট্রিং টু স্ট্রিং() { রিটার্ন "কর্মচারী [নাম=" + নাম + ", প্রযুক্তি=" + প্রযুক্তি + "]"; }}
আউটপুট
সফ্টওয়্যার [কর্মচারী=[কর্মচারী [নাম=রাজা রমেশ, প্রযুক্তি=জাভা]]]