Java
 Computer >> コンピューター >  >> プログラミング >> Java

予期されたBEGIN_OBJECTを解決する方法ですが、BEGIN_ARRAYはJavaでGsonを使用していましたか?


逆シリアル化中、GsonはJSONオブジェクトを期待できますが、JSON配列を見つけることができます。一方から他方に変換できないため、「 JsonSyntaxException:java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYでした」というエラーがスローされる可能性があります。 "実行時に。

import com.google.gson.Gson;
public class GsonErrorTest {
   public static void main(String args[]) throws Exception {
      String json = "{\"employee\":[{\"name\":\"Raja Ramesh\", \"technology\":\"java\"}]}";
      Gson gson = new Gson();
      Software software = gson.fromJson(json, Software.class);
      System.out.println(software);
   }
}
class Software {
   Employee employee;
}
class Employee {
   String name;
   String technology;
}
出力
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 14
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)at com.google.gson.Gson.fromJson(Gson.java:795)
at com.google.gson.Gson.fromJson(Gson.java:761)
at com.google.gson.Gson.fromJson(Gson.java:710)
at com.google.gson.Gson.fromJson(Gson.java:682)
at BeginObjectError.main(BeginObjectError.java:7)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 14
at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165)


を変更して解決する必要があります POJOタイプからコレクションまたは配列タイプへ。 以下の例では、リストを使用できます。 POJOクラスのコレクション。

import java.util.List;
import com.google.gson.Gson;
public class GsonListTest {
   public static void main(String args[]) throws Exception {
      String jsonString = "{\"employees\":[{\"name\":\"Raja Ramesh\", \"technology\":\"Java\"}]}";
      Gson gson = new Gson();
      Software software = gson.fromJson(jsonString, Software.class);
      System.out.println(software);
   }
}
class Software {
   List<Employee> employees;
   @Override
   public String toString() {
      return "Software [employees=" + employees + "]";
   }
}
class Employee {
   String name;
   String technology;
   @Override
   public String toString() {
      return "Employee [name=" + name + ", technology=" + technology + "]";
   }
}
出力
Software [employees=[Employee [name=Raja Ramesh, technology=Java]]]

  1. JavaのGsonライブラリを使用してJSON文字列をファイルに書き込む方法は?

    Gsonは、JavaオブジェクトをJSON表現に変換するために使用できるライブラリです。 。使用する主なクラスはGson new Gson()を呼び出すことで作成できます およびGsonBuilder クラスを使用してGsonインスタンスを作成できます。 JSON文字列をファイルに書き込む toJson()を使用する Gsonの方法 以下の例のクラス 例 import java.io.*; import com.google.gson.*; public class JSONToFileTest {    public static void main(String[

  2. JavaでNullPointerExceptionを解決する方法は?

    NullPointerException アプリケーションコード、他の参照されているAPI、またはミドルウェアが次の条件に遭遇したときにJVMによってスローされるランタイム例外です nullオブジェクトのインスタンスメソッドを呼び出そうとしています。 nullオブジェクトの特定のフィールドにアクセスまたは変更しようとしています。 nullオブジェクトの長さを配列として取得しようとしています。 NullPointerExceptionを解決する手順: java.lang.NullPointerExceptionを確認します トレースをスタックし、例外がトリガーされる場所を特定します