JsonMappingException: из токена START_ARRAY

Учитывая следующий файл .json:

[ { "name" : "New York", "number" : "732921", "center" : [ "latitude" : 38.895111, "longitude" : -77.036667 ] }, { "name" : "San Francisco", "number" : "298732", "center" : [ "latitude" : 37.783333, "longitude" : -122.416667 ] } ] 

Я подготовил два класса для представления данных:

 public class Location { public String name; public int number; public GeoPoint center; } 

 public class GeoPoint { public double latitude; public double longitude; } 

Чтобы разобрать содержимое из файла .json, я использую Jackson 2.2.x и подготовил следующий метод:

 public static List<Location> getLocations(InputStream inputStream) { ObjectMapper objectMapper = new ObjectMapper(); try { TypeFactory typeFactory = objectMapper.getTypeFactory(); CollectionType collectionType = typeFactory.constructCollectionType( List.class, Location.class); return objectMapper.readValue(inputStream, collectionType); } catch (IOException e) { e.printStackTrace(); } return null; } 

Пока я не оставляю свойство center все содержимое может быть проанализировано. Однако, когда я пытаюсь разобрать геокоординаты, я получаю следующее сообщение об ошибке:

Com.fasterxml.jackson.databind.JsonMappingException: невозможно десериализовать экземпляр
Com.example.GeoPoint из токена START_ARRAY в [Источник: android.content.res.AssetManager$AssetInputStream@416a5850; Строка: 5, столбец: 25]
(Через ссылочную цепочку: com.example.Location ["center"])

Solutions Collecting From Web of "JsonMappingException: из токена START_ARRAY"

Строка JSON неверна: тип center представляет собой массив недопустимых объектов. Замените [ и ] на { и } в строке JSON вокруг longitude и latitude чтобы они были объектами:

 [ { "name" : "New York", "number" : "732921", "center" : { "latitude" : 38.895111, "longitude" : -77.036667 } }, { "name" : "San Francisco", "number" : "298732", "center" : { "latitude" : 37.783333, "longitude" : -122.416667 } } ] 

JsonMappingException: out of START_ARRAY token бросает объект mapper-объекта Jackson, поскольку он ожидает Object {} тогда как в ответ он обнаружил Array [{}] .

Это можно решить, заменив Object на Object[] в аргументе для geForObject("url",Object[].class) . Рекомендации:

  1. Ссылка-
  2. задания 2
  3. Ref.3