Rumah > Java > javaTutorial > Mengapakah GSON Membuang 'Dijangka BEGIN_OBJECT tetapi BEGIN_ARRAY' Semasa Menghuraikan JSON?

Mengapakah GSON Membuang 'Dijangka BEGIN_OBJECT tetapi BEGIN_ARRAY' Semasa Menghuraikan JSON?

Barbara Streisand
Lepaskan: 2024-12-21 16:38:10
asal
301 orang telah melayarinya

Why Does GSON Throw

GSON Melontar "Dijangka BEGIN_OBJECT tetapi telah BEGIN_ARRAY"?

Apabila cuba menghuraikan rentetan JSON ke dalam senarai objek menggunakan GSON, anda mungkin menghadapi ralat "Dijangka BEGIN_OBJECT tetapi BEGIN_ARRAY". Ini berlaku apabila data JSON yang disediakan ialah tatasusunan, sementara anda menjangkakan objek.

Untuk menyelesaikan isu ini, anda harus melaraskan kod penghuraian anda untuk menampung struktur tatasusunan. Berikut ialah pecahan masalah dan penyelesaian yang betul:

Masalah:

Data JSON yang disediakan ialah tatasusunan objek dan bukannya satu objek. Kod anda, bagaimanapun, cuba menghuraikannya sebagai objek tunggal, mengakibatkan ralat.

Penyelesaian:

Untuk membetulkannya, anda perlu menentukan bahawa JSON mewakili susunan objek. Ini boleh dilakukan dengan mengubah suai kod anda untuk menghuraikan JSON ke dalam tatasusunan kelas objek anda:

ChannelSearchEnum[] enums = gson.fromJson(jstring, ChannelSearchEnum[].class);
Salin selepas log masuk

Dengan cara ini, GSON akan menghuraikan JSON dengan betul sebagai tatasusunan objek ChannelSearchEnum.

Penyelesaian Alternatif:

Untuk lebih fleksibiliti, anda boleh menggunakan kelas TypeToken untuk tentukan jenis berparameter untuk koleksi yang ingin anda huraikan, seperti yang dilihat di bawah:

Type collectionType = new TypeToken<Collection<ChannelSearchEnum>>() {}.getType();
Collection<ChannelSearchEnum> enums = gson.fromJson(jstring, collectionType);
Salin selepas log masuk

Pendekatan ini membolehkan anda menghuraikan JSON ke dalam koleksi objek ChannelSearchEnum, yang boleh menjadi Senarai, Set atau sebarang jenis koleksi lain.

Atas ialah kandungan terperinci Mengapakah GSON Membuang 'Dijangka BEGIN_OBJECT tetapi BEGIN_ARRAY' Semasa Menghuraikan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan