У меня возникли проблемы с разбором моего JSON, который я получаю от javascript. Формат JSON это:Разбор массива JSON с gson
[{"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}]}
Но я также необходим в настоящее время создать класс с этими позициями. Я havnt работал над классом, так как сначала попытался распечатать вывод, но я не могу его сломать дальше. Я получаю это сообщение об ошибке:
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
В конце концов, iw ant для циклических позиций, создавая класс для каждого «положения», который содержит список с другим классом Position, который имеет int x, y.
Спасибо за ваше время.
спасибо. Я никогда не думал, что это будет так легко, и я даже не знаю, что я хотел сделать со String. Вы мой герой – user1047833
Привет, возможно ли разобрать сложную строку JSON, созданную на PHP, с использованием смешанных типов данных без создания внутренних классов. На самом деле наш API написан на PHP, и мы используем этот API через java-приложение. – sumit
@sumit: как вы хотите использовать строку JSON? Хотя JSON - это формат объекта в PHP/javascript, как бы вы обращались к свойствам в java? –