您好,欢迎访问一九零五行业门户网

如何使用Gson在Java中解决“Expected BEGIN_OBJECT but was BEGIN_ARRAY”错误?

反序列化时,gson 可以期望一个 json 对象,但它可以找到一个 json 数组。由于它无法从一种转换为另一种,因此它可能会在运行时抛出错误“jsonsyntaxexception: java.lang.illegalstateexception: expected begin_object but was 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 14at 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 14at 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 类中使用list集合。
示例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]]]
以上就是如何使用gson在java中解决“expected begin_object but was begin_array”错误?的详细内容。
其它类似信息

推荐信息