Я пытаюсь разобрать json на java.JSON String к объекту Java с использованием GSON
У меня есть следующая строка, которая действует в соответствии с JSON jsonlint.com
private final static String LOC_JSON =
"["
+"{"
+" \"lat1\": 39.737567,"
+" \"lat2\": 32.7801399,"
+" \"long1\": -104.98471790000002,"
+" \"long2\": -96.80045109999998"
+"},"
+" ["
+" {"
+" \"lat\": {"
+" \"b\": 38.88368709500021,"
+" \"d\": 40.620468491667026"
+" },"
+" \"long\": {"
+" \"b\": -105.75306170749764,"
+" \"d\": -104.675854661387"
+" }"
+" }"
+" ]"
+"]";
Я пытаюсь разобрать его в объект, и я получаю следующее сообщение об ошибке. "Ожидаемое BEGIN_OBJECT но BEGIN_ARRAY в строке 1 колонке 2"
Gson gson = new Gson();
BoxSearch b = gson.fromJson(LOC_JSON, BoxSearch.class);
BoxSearch состоит из этого.
private Number lat1;
private Number lat2;
private Number long1;
private Number long2;
private Boxes[] boxes;
Коробки - это объект «Локатор» и объект Долгота, которые оба определены одинаковыми.
private String b;
private String d;
можно разобрать высшие атрибуты уровня (LAT1, LAT2, long1 и long2) в более простой объект BoxSearch, который имеет только эти 4 атрибуты. Проблема возникает, когда json и объект более сложны. Можно ли даже делать то, что я пытаюсь сделать?
Надеюсь, я предоставил достаточно информации, чтобы получить помощь. Я был бы рад предоставить дополнительную информацию или даже тестовый проект, если потребуется. Я запускаю это как тест junit.
Спасибо.
Возможный дубликат [GSON throwing "Ожидаемое НАЧИНАНИЕ \ _OBJECT, но НАЧАЛО \ _ARRAY"?] (Http://stackoverflow.com/questions/9598707/gson-throwing-expected-begin-object-but-was-begin -array) - ваш JSON - это массив, а не объект. У вас будет проблема, потому что это массив, содержащий разные типы объектов (объект и массив), с которыми вы не справитесь, без написания настраиваемого десериализатора. –
@BrianRoach это больше похоже на ответ;) –
@RC. Да ... Хм. Я думаю, может быть, я переведу его, старый Q отвечает, почему он получает ошибку, но разрешение на его случай отличается от –