Jackson.Парсинг простой, а не JSON строки

320
06 июля 2017, 01:12

Интересует, можно ли скормить обычную строку Джексону? И потом уже построить 2 списка , по значениям? Вот строка которую я получил, после парсинга JSON. `

[{"id":3,"name":"Replay"},{"id":4,"name":"Replica"},{"id":2,"name":"Vianor"},{"id":5,"name":"Kosei"},{"id":12,"name":"Invader"},{"id":8,"name":"MANSORY"},{"id":13,"name":"RAYS"},{"id":14,"name":"VISSOL"}]`

Парсинг осуществляется таким образом:

String make =pojo_params.getData().getMake();

Если нет, то как лучше поступить? ЛУчшей идеи, кроме как скормить её опять Джексону у меня не приходит. На всякий случай прикреплю оригинал JSON, чтобы было понятно откуда эта строка у меня взялась.

{
"success": true,
"data": {
    "auto": "[{\"id\":1,\"name\":\"Acura\"},{\"id\":4,\"name\":\"AUDI\"},{\"id\":5,\"name\":\"Bentley\"},{\"id\":6,\"name\":\"BMW\"},{\"id\":8,\"name\":\"Cadillac\"},{\"id\":10,\"name\":\"Chevrolet\"},{\"id\":11,\"name\":\"Chrysler\"},{\"id\":12,\"name\":\"Citroen\"},{\"id\":17,\"name\":\"Dodge\"},{\"id\":18,\"name\":\"Fiat\"},{\"id\":19,\"name\":\"Ford\"},{\"id\":21,\"name\":\"Geely\"},{\"id\":65,\"name\":\"Gmc\"},{\"id\":22,\"name\":\"Great Wall\"},{\"id\":23,\"name\":\"Honda\"},{\"id\":25,\"name\":\"Hyundai\"},{\"id\":26,\"name\":\"Infiniti\"},{\"id\":27,\"name\":\"Jaguar\"},{\"id\":28,\"name\":\"Jeep\"},{\"id\":30,\"name\":\"Kia\"},{\"id\":33,\"name\":\"Landrover\"},{\"id\":34,\"name\":\"Lexus\"},{\"id\":38,\"name\":\"Mazda\"},{\"id\":39,\"name\":\"Mercedes\"},{\"id\":41,\"name\":\"MINI\"},{\"id\":42,\"name\":\"Mitsubishi\"},{\"id\":66,\"name\":\"Mustang\"},{\"id\":44,\"name\":\"Nissan\"},{\"id\":45,\"name\":\"Opel\"},{\"id\":46,\"name\":\"Peugeot\"},{\"id\":47,\"name\":\"Porsche\"},{\"id\":48,\"name\":\"Renault\"},{\"id\":54,\"name\":\"Skoda\"},{\"id\":51,\"name\":\"SsangYong\"},{\"id\":55,\"name\":\"Subaru\"},{\"id\":56,\"name\":\"Suzuki\"},{\"id\":57,\"name\":\"Toyota\"},{\"id\":60,\"name\":\"Volkswagen\"},{\"id\":61,\"name\":\"Volvo\"}]",
    "make": "[{\"id\":3,\"name\":\"Replay\"},{\"id\":4,\"name\":\"Replica\"},{\"id\":2,\"name\":\"Vianor\"},{\"id\":5,\"name\":\"Kosei\"},{\"id\":12,\"name\":\"Invader\"},{\"id\":8,\"name\":\"MANSORY\"},{\"id\":13,\"name\":\"RAYS\"},{\"id\":14,\"name\":\"VISSOL\"}]",
    "size": "[{\"id\":13,\"name\":13},{\"id\":14,\"name\":14},{\"id\":15,\"name\":15},{\"id\":16,\"name\":16},{\"id\":17,\"name\":17},{\"id\":18,\"name\":18},{\"id\":19,\"name\":19},{\"id\":20,\"name\":20},{\"id\":21,\"name\":21},{\"id\":22,\"name\":22}]",
    "rim": "[{\"id\":\"5.0\",\"name\":\"5.0\"},{\"id\":\"5.5\",\"name\":\"5.5\"},{\"id\":\"6.0\",\"name\":\"6.0\"},{\"id\":\"6.5\",\"name\":\"6.5\"},{\"id\":\"7.0\",\"name\":\"7.0\"},{\"id\":\"7.5\",\"name\":\"7.5\"},{\"id\":\"8.0\",\"name\":\"8.0\"},{\"id\":\"8.5\",\"name\":\"8.5\"},{\"id\":\"9.0\",\"name\":\"9.0\"},{\"id\":\"9.5\",\"name\":\"9.5\"},{\"id\":\"10.0\",\"name\":\"10.0\"},{\"id\":\"10.5\",\"name\":\"10.5\"},{\"id\":\"11.0\",\"name\":\"11.0\"}]",
    "psd": "[{\"id\":12,\"name\":\"4x100\"},{\"id\":9,\"name\":\"4x108\"},{\"id\":14,\"name\":\"4x114.3\"},{\"id\":3,\"name\":\"4x98\"},{\"id\":4,\"name\":\"5x100\"},{\"id\":15,\"name\":\"5x105\"},{\"id\":7,\"name\":\"5x108\"},{\"id\":6,\"name\":\"5x110\"},{\"id\":8,\"name\":\"5x112\"},{\"id\":2,\"name\":\"5x114.3\"},{\"id\":25,\"name\":\"5x115\"},{\"id\":33,\"name\":\"5x118\"},{\"id\":1,\"name\":\"5x120\"},{\"id\":35,\"name\":\"5x120-130\"},{\"id\":26,\"name\":\"5x127\"},{\"id\":11,\"name\":\"5x130\"},{\"id\":16,\"name\":\"5x139.7\"},{\"id\":19,\"name\":\"5x150\"},{\"id\":27,\"name\":\"5x160\"},{\"id\":20,\"name\":\"6x114.3\"},{\"id\":31,\"name\":\"6x127\"},{\"id\":29,\"name\":\"6x130\"},{\"id\":168,\"name\":\"6x135\"},{\"id\":13,\"name\":\"6x139.7\"}]",
    "et": "[{\"id\":\"2.0\",\"name\":\"2.0\"},{\"id\":\"5.0\",\"name\":\"5.0\"},{\"id\":\"7.0\",\"name\":\"7.0\"},{\"id\":\"10.0\",\"name\":\"10.0\"},{\"id\":\"14.0\",\"name\":\"14.0\"},{\"id\":\"15.0\",\"name\":\"15.0\"},{\"id\":\"16.0\",\"name\":\"16.0\"},{\"id\":\"18.0\",\"name\":\"18.0\"},{\"id\":\"19.0\",\"name\":\"19.0\"},{\"id\":\"20.0\",\"name\":\"20.0\"},{\"id\":\"20.5\",\"name\":\"20.5\"},{\"id\":\"21.0\",\"name\":\"21.0\"},{\"id\":\"23.0\",\"name\":\"23.0\"},{\"id\":\"24.0\",\"name\":\"24.0\"},{\"id\":\"25.0\",\"name\":\"25.0\"},{\"id\":\"26.0\",\"name\":\"26.0\"},{\"id\":\"27.0\",\"name\":\"27.0\"},{\"id\":\"28.0\",\"name\":\"28.0\"},{\"id\":\"29.0\",\"name\":\"29.0\"},{\"id\":\"30.0\",\"name\":\"30.0\"},{\"id\":\"31.0\",\"name\":\"31.0\"},{\"id\":\"32.0\",\"name\":\"32.0\"},{\"id\":\"33.0\",\"name\":\"33.0\"},{\"id\":\"34.0\",\"name\":\"34.0\"},{\"id\":\"34.5\",\"name\":\"34.5\"},{\"id\":\"35.0\",\"name\":\"35.0\"},{\"id\":\"36.0\",\"name\":\"36.0\"},{\"id\":\"37.0\",\"name\":\"37.0\"},{\"id\":\"38.0\",\"name\":\"38.0\"},{\"id\":\"39.0\",\"name\":\"39.0\"},{\"id\":\"39.5\",\"name\":\"39.5\"},{\"id\":\"40.0\",\"name\":\"40.0\"},{\"id\":\"41.0\",\"name\":\"41.0\"},{\"id\":\"41.3\",\"name\":\"41.3\"},{\"id\":\"41.5\",\"name\":\"41.5\"},{\"id\":\"42.0\",\"name\":\"42.0\"},{\"id\":\"42.5\",\"name\":\"42.5\"},{\"id\":\"43.0\",\"name\":\"43.0\"},{\"id\":\"43.8\",\"name\":\"43.8\"},{\"id\":\"44.0\",\"name\":\"44.0\"},{\"id\":\"45.0\",\"name\":\"45.0\"},{\"id\":\"45.5\",\"name\":\"45.5\"},{\"id\":\"46.0\",\"name\":\"46.0\"},{\"id\":\"47.0\",\"name\":\"47.0\"},{\"id\":\"47.5\",\"name\":\"47.5\"},{\"id\":\"48.0\",\"name\":\"48.0\"},{\"id\":\"48.5\",\"name\":\"48.5\"},{\"id\":\"49.0\",\"name\":\"49.0\"},{\"id\":\"49.5\",\"name\":\"49.5\"},{\"id\":\"50.0\",\"name\":\"50.0\"},{\"id\":\"51.0\",\"name\":\"51.0\"},{\"id\":\"52.0\",\"name\":\"52.0\"},{\"id\":\"52.5\",\"name\":\"52.5\"},{\"id\":\"53.0\",\"name\":\"53.0\"},{\"id\":\"54.0\",\"name\":\"54.0\"},{\"id\":\"55.0\",\"name\":\"55.0\"},{\"id\":\"56.0\",\"name\":\"56.0\"},{\"id\":\"57.0\",\"name\":\"57.0\"},{\"id\":\"58.0\",\"name\":\"58.0\"},{\"id\":\"59.0\",\"name\":\"59.0\"},{\"id\":\"60.0\",\"name\":\"60.0\"},{\"id\":\"62.0\",\"name\":\"62.0\"},{\"id\":\"65.0\",\"name\":\"65.0\"},{\"id\":\"66.0\",\"name\":\"66.0\"},{\"id\":\"68.0\",\"name\":\"68.0\"}]",
    "dia": "[{\"id\":\"54.1\",\"name\":\"54.1\"},{\"id\":\"56.1\",\"name\":\"56.1\"},{\"id\":\"56.6\",\"name\":\"56.6\"},{\"id\":\"57.1\",\"name\":\"57.1\"},{\"id\":\"58.1\",\"name\":\"58.1\"},{\"id\":\"60.1\",\"name\":\"60.1\"},{\"id\":\"63.3\",\"name\":\"63.3\"},{\"id\":\"63.4\",\"name\":\"63.4\"},{\"id\":\"64.1\",\"name\":\"64.1\"},{\"id\":\"65.1\",\"name\":\"65.1\"},{\"id\":\"66.1\",\"name\":\"66.1\"},{\"id\":\"66.6\",\"name\":\"66.6\"},{\"id\":\"66.9\",\"name\":\"66.9\"},{\"id\":\"67.1\",\"name\":\"67.1\"},{\"id\":\"70.1\",\"name\":\"70.1\"},{\"id\":\"70.6\",\"name\":\"70.6\"},{\"id\":\"71.1\",\"name\":\"71.1\"},{\"id\":\"71.5\",\"name\":\"71.5\"},{\"id\":\"71.6\",\"name\":\"71.6\"},{\"id\":\"72.6\",\"name\":\"72.6\"},{\"id\":\"73.1\",\"name\":\"73.1\"},{\"id\":\"74.1\",\"name\":\"74.1\"},{\"id\":\"76.1\",\"name\":\"76.1\"},{\"id\":\"77.7\",\"name\":\"77.7\"},{\"id\":\"77.8\",\"name\":\"77.8\"},{\"id\":\"78.1\",\"name\":\"78.1\"},{\"id\":\"84.1\",\"name\":\"84.1\"},{\"id\":\"86.8\",\"name\":\"86.8\"},{\"id\":\"89.1\",\"name\":\"89.1\"},{\"id\":\"93.1\",\"name\":\"93.1\"},{\"id\":\"100.1\",\"name\":\"100.1\"},{\"id\":\"106.1\",\"name\":\"106.1\"},{\"id\":\"106.2\",\"name\":\"106.2\"},{\"id\":\"108.1\",\"name\":\"108.1\"},{\"id\":\"110.1\",\"name\":\"110.1\"},{\"id\":\"110.2\",\"name\":\"110.2\"},{\"id\":\"110.5\",\"name\":\"110.5\"}]"
}
Answer 1

Создай модель для объекта который содержит id,name (назаваем её IdNameEntity)

public class IdNameEntity {
    private int id;
    private String name;
    //getters and setters
}

Ниже демо как парсить твой JSON:

import com.fasterxml.jackson.databind.ObjectMapper;
//other imports
public class Test {
    public static void main(String[] args) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        String content = "[{\"id\":3,\"name\":\"Replay\"},{\"id\":4,\"name\":\"Replica\"},{\"id\":2,\"name\":\"Vianor\"},{\"id\":5,\"name\":\"Kosei\"},{\"id\":12,\"name\":\"Invader\"},{\"id\":8,\"name\":\"MANSORY\"},{\"id\":13,\"name\":\"RAYS\"},{\"id\":14,\"name\":\"VISSOL\"}]";
        IdNameEntity[] idNameEntities = mapper.readValue(content, IdNameEntity[].class);
    }
}

Если надо получить список из масива:

List<IdNameEntity> list = Arrays.asList(idNameEntities);
Answer 2

Автор вы делаете проблему на ровном месте.
Парсить JSON из строки, которая приходит по HTTP вы уже умеете.
Здесь все то же самое. Вот вам строка.

String make =pojo_params.getData().getMake();

Скормите ее парсеру и он вернет вам массив элементов.
Все абсолютно то же самое.

Просто надо понять, что ваш оригинальный JSON содержит некоторые строковые поля, содержимое которых по сути JSON, просто их надо распарсить отдельно.

READ ALSO
No suitable driver found for jdbc:oracle:thin

No suitable driver found for jdbc:oracle:thin

Всем привет, подскажите новичку пишу тест с иcпользованием запросов к оракловой базе - использую ojdbc6jar, пока тесты запускались руками из Idea проблем...

380
Массив не успевает обработаться

Массив не успевает обработаться

Добрый деньЕсть следующая проблема, сервер присылает на устройство данные размером 5125 байт

225
Как сделать связку commitEdit() и getValue()?

Как сделать связку commitEdit() и getValue()?

Как мне реализовать вызов commitEdit в данном случае, чтобы получать getValue из форматтера? Читаю документацию https://docsoracle

225
Как включить wsdl файл в package my.some.package при сборке jar в gradle?

Как включить wsdl файл в package my.some.package при сборке jar в gradle?

При компиляции jar'ок средствами Ant в них, по дефолтным настройкам, включаются и допфайлы который нужны для проекта, т

303