| 
 | 
| 
 
Jackson JsonSerializer unum как несколько полей, а не объект json, как? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Привет всем! Есть объект с полем типа enum Код: java 1. 2. 3. 4. 5. 6. 7.  enum MyType  Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Делаем сериализатор: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вызываем в тесте String json = new ObjectMapper().writeValueAsString(экземпляр MyParams ); Нужно получить объект JSON вида: Код: powershell 1. 2. 3. 4. 5. 6. 7. По факту enum оборачивается в объект: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. Как вот поля енама поднять на уровень к полям основного объекта? Если тупо убрать gen.writeStartObject(); и gen.writeEndObject(); то ошибка "Can not write a field name, expecting a value", что ожидаемо. Можно аннотацию @JsonSerialize(using = MyParamsSerializer.class) поставить над полем енама и переписать, но это всё равно даст в результате объект, а не просто набор полей енама в json Никак не нагуглю варианты и по докам, что-то толком не могу пока найти, а еще десиализатор надо будет потом добавлять :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.11.2021, 10:26 | 
  
  
  
   | 
||
| 
 
Jackson JsonSerializer unum как несколько полей, а не объект json, как? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Изначально объект содержал отдельно поля enum как свои поля, но при рефакторинге решил убрать их в enum, т.к. много где эти поля как параметры передаются, а хотелось бы сократить, да и задать какие-то значения в enum постоянные, чтобы использовать в других местах.  Т.е. менять модель на Фронте пока что нельзя, надо согласовывать, что долго, поэтому в код приехал сериализатор :) Может другие решения уже есть?... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.11.2021, 10:33 | 
  
  
  
   | 
||
| 
 
Jackson JsonSerializer unum как несколько полей, а не объект json, как? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Nixic Можно аннотацию @JsonSerialize(using = MyParamsSerializer.class) поставить над полем енама и переписать, но это всё равно даст в результате объект, а не просто набор полей енама в json ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.11.2021, 11:42 | 
  
  
  
   | 
||
| 
 
Jackson JsonSerializer unum как несколько полей, а не объект json, как? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Что ж.. пришлось вернуть поля в основной класс, и игнорить enum, а значения полей заполнять в конструкторе,  такое себе решение(временно-постоянное), но хотя бы не сломается использование этого класса другими сервисами и в каких-то там запросах... Код: java 1. 2. 3. Код: java 1. 2. 3. 4. 5. Но десериализацию нужно всё же кастомную запилить, чтобы из поля code enum определялся, ну это вроде как мелочи уже. Всем, спасибо :)) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.11.2021, 11:43 | 
  
  
  
   | 
||
| 
 
Jackson JsonSerializer unum как несколько полей, а не объект json, как? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Андрей Панфилов, Вот ведь :) Поторопился. Спасибо! Сейчас JsonUnwrapped посмотрю, вроде бы оно... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.11.2021, 11:44 | 
  
  
  
   | 
||
| 
 
Jackson JsonSerializer unum как несколько полей, а не объект json, как? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Супер! Андрей, спасибо ещё раз, все развернулось положилось как надо, без всяких костылей :) Интересно, а десериализация также гладко пройдёт... Сейчас тест напишу :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.11.2021, 11:52 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=40113484&tid=2120307]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    11ms | 
check forum access:  | 
    2ms | 
check topic access:  | 
    2ms | 
track hit:  | 
    59ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    44ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 13ms | 
| total: | 154ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...