Гадкие и даже мерзкие извращения с JSON...
Прелюдия на разогрев. Нужно обратиться в базу данных по простейшему запросу: SELECT esr FROM gid_ss_nsi.scb_station_desc и дёрнуть все ESR (678 штукенций). Ок, сделал. Вернул на ручку в метод для API. Далее создал тело запроса JSON, прописал конструкторы - пустой и полный и, конечно, геттеры и сеттеры.
Иду в класс и прописываю тело JSON: TabloJson tabloJson = new TabloJson(); tabloJson.setDateOp(""); tabloJson.setMatrix(true); tabloJson.setLinksFlag(true); tabloJson.setIdConfig(41); tabloJson.setShowAll(true);
Gson gson = new Gson();
String json = gson.toJson(tabloJson);
Делаю запрос POST и хер там - ашЫбко. В постмане тело выглядит так: { "esr": [ "193665" ], "dateOp": "2024-07-23T06:32:03.681Z", "matrix": true, "linksFlag": true, "idConfig": 0, "showAll": true }
А у меня сяк: { "esr": [ 193665 ], "dateOp": "2024-07-23T06:32:03.681Z", "matrix": true, "linksFlag": true, "idConfig": 0, "showAll": true }
Кавычек нет на 193665... what the fuck??
Чувствую себя БДСМ-щиком, а всё оттого, что никак не работает вариант в TabloJson создание List с ESR (это айдишники, которые я получаю из базы данных). List<String> esr. При преобразовании String json = gson.toJson(tabloJson) должен получиться как раз массив.
Хер!
Заработало спустя час грязно-костыльных извращений: Gson gson = new Gson(); String json = gson.toJson(tabloJson); String squareBrackets = "{"esr": ["" + value + ""]}"+ json;
Что могу сказать по прошествии часа - иногда полезно пить кофе, много экспериментировать и даже вот так :))
· 16.08.2024
Не понял в чем проблема. Стринг сериализуется в кавычках - все как положено.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 16.08.2024
Сериализуется стрингой, но без явных кавычек, оттого и были танцы с бубнами в строке String squareBrackets, так как в тело именно кавычки нужны ))
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08.2024
Тоже долго не понимал в чём прикол, а потом как понял)))
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08.2024
Так не бывает. Стринг сериализуется в кавычках. Если валью нод серилиазовался без кавычек, значит из дб вы вытащили нумерик тайп а не стринг.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08.2024
В том и прикол, в БД колонка помечена «ABC”, что значит стринга, а пришёл после парсинга int. Волшебным образом, хотя распарсивал стрингу. Долго бился над этим, не понял отчего так. В итоге, пришлось конкатенировать кавычки
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08.2024
ну значит ДАЛ у вас так написан, и при десериализации из дб он парсит стринг в инт. Джейсон сериализатор тут не виноват. Если используете какой-то ОРМ, то проверьте ваши модели.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён