Rumah  >  Artikel  >  Java  >  Mengapa Saya Mendapat Ralat \"Dijangkakan BEGIN_ARRAY tetapi BEGIN_OBJECT\" Semasa Menghuraikan JSON dalam Java?

Mengapa Saya Mendapat Ralat \"Dijangkakan BEGIN_ARRAY tetapi BEGIN_OBJECT\" Semasa Menghuraikan JSON dalam Java?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 17:14:02388semak imbas

Why Am I Getting a

Ralat Penghuraian JSON: "Dijangka BEGIN_ARRAY tetapi BEGIN_OBJECT"

Di Java, anda menghadapi ralat "Dijangka BEGIN_ARRAY tetapi BEGIN_OBJECT " disebabkan oleh ketidakpadanan antara struktur JSON yang dijangka dan sebenar semasa menghuraikan menggunakan Gson.

Struktur JSON

Respons JSON yang disediakan daripada pelayan bukanlah tatasusunan tetapi objek tunggal:

<code class="json">{
  "dstOffset" : 3600,
  "rawOffset" : 36000,
  "status" : "OK",
  "timeZoneId" : "Australia/Hobart",
  "timeZoneName" : "Australian Eastern Daylight Time"
}</code>

Kod Parsing Gson

Walau bagaimanapun, dalam kod anda, anda tersilap mengandaikan bahawa respons JSON ialah susunan objek Post:

<code class="java">List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));</code>

Gson menjangkakan tatasusunan, jadi ia melemparkan ralat apabila ia menemui aksara BEGIN_OBJECT dalam respons JSON.

Penyelesaian

Kepada selesaikan ralat, ubah suai kod anda untuk mengharapkan satu objek Post:

<code class="java">Post post = gson.fromJson(reader, Post.class);</code>

Perubahan ini akan sejajar dengan struktur JSON sebenar dan menghapuskan ralat penghuraian.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \"Dijangkakan BEGIN_ARRAY tetapi BEGIN_OBJECT\" Semasa Menghuraikan JSON dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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