Десериализовать массив ключей Джексона со смежными свойствами - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть объекты в json с ключами «dynamici c», в частности, ключи, которые содержатся в массивах объекта. Я должен был десериализовать массив в живые объекты. Формат данных json не может быть изменен, так как он поступает из устаревшей системы. Я пишу слой перевода.

[
  {
    "name": "thing",
    "animals": ["tiger","wolf"],
    "shapes": ["square"],
    "tiger": {
      "diet": "meat",
      "cuteness": "medium"
    },
    "wolf": {
      "diet": "any",
      "cuteness": "high"
    },
    "square": {
      "roundness": "medium",
      "stackable": true
    }
  },
  {
    "name": "other thing",
    "animals": ["llama"],
    "shapes": ["circle", "triangle"],
    "llama": {
      "diet": "veg",
      "cuteness": "high"
    },
    "circle": {
      "roundness": "high",
      "stackable": false
    },
    "triangle": {
      "roundness": "low",
      "stackable": false
    }
  }
]

Я хочу превратить его в java объекты

@Data
public class Thinger {
  private String name;
  private List<Animal> animals;
  private List<Shape> shapes;
}

@Data
public class Animal {
  private String diet;
  private String cuteness;
}

@Data
public class Shape {
  private String roundness;
  private bool stackable;
}

Примечание: @Data - это аннотация Lombok, добавляющая конструкторы, геттеры сеттеры ... это не источник проблемы; Я использую Lombok с Джексоном в течение нескольких лет

Я застрял в написании собственного десериализатора? Я не могу найти аннотацию для «это набор ключей для свойств объектов в родительском узле».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...