用gson解析JSON数组

我无法解析我从javascript获得的JSON。 JSON的格式是这样的:

[{"positions":[{"x":50,"y":50},{"x":82,"y":50},{"x":114,"y":50},{"x":146,"y":50}]},{"positions":[{"x":210,"y":50},{"x":242,"y":50},{"x":274,"y":50}]}] 

到目前为止,我已经能够做到这一点:

 {"positions":[{"x":50,"y":50},{"x":82,"y":50},{"x":114,"y":50},{"x":146,"y":50}]} 

但我现在还需要创建一个具有这些职位的课程。 我一直在上课,因为我先尝试打印输出,但我无法进一步分解。 我收到此错误消息:

java.lang.IllegalStateException:这不是JSON数组。

我的代码是这样的:

  JsonParser parser = new JsonParser(); String ships = request.getParameter("JSONships"); JsonArray array = parser.parse(ships).getAsJsonArray(); System.out.println(array.get(0).toString()); JsonArray array2 = parser.parse(array.get(0).toString()).getAsJsonArray(); System.out.println(array2.get(0).toString()); 

我也试过这样做:

  Gson gson = new Gson() ; String lol = (gson.fromJson(array.get(0), String.class)); System.out.println(lol); 

在这种情况下,我得到:

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期的STRING但是BEGIN_OBJECT

最后,我想循环遍历位置,为每个“位置”创建类,其中包含具有另一个类Position的List,其具有int x,y。

感谢您的时间。

定义您的类,您将获得使用gson所需的一切:

 public class Class1 { private int x; private List elements; } 

而内在阶级:

 public class Class2 { private String str1; private Integer int2; } 

现在你可以像这样解析外部类的json字符串:

 gson.fromJson(jsonString, Class1.class); 

使用Gson时的错误是您尝试解析String的复杂对象,这是不可能的。