SpringBoot ArrayList / JSON: добавить все элементы определенного типа в список этого типа - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь написать REST API для управления счетами. В рамках этого проекта я столкнулся с проблемой. Я не могу понять, как добавить Объекты определенного типа в Список этого типа, если Объекты указаны в пост-запросе Json. Джейсон содержит 3 основных элемента:

Номер счета-фактуры - Получатель (со всеми данными, необходимыми для этого получателя) - неизвестное количество статей

, и хотя Контроллер сохраняет номер счета-фактуры и получатель просто отлично, он не сохраняет статьи и не добавляет их в список счетов-фактур.

Я выполнил поиск Stackoverflow для такого типа проблемы, но до сих пор не нашел решения.

Я также попытался отобразить весь Jason Post на карту, используя ObjectMapper, но это не очень удобно и неэффективно, если мне нужно сопоставить каждый вход с картой, а затем выполнить поиск по карте, чтобы перестроить объекты так, Я могу сохранить их в базе данных.

Поскольку у меня не было абсолютно никаких знаний о загрузке Spring и только очень базовые c знания о Java, до начала моей работы над этим проектом я теперь оказался застрял.

Чтобы дать вам идею, вот мой контролер:

@RestController
public class RechnungController {

@Autowired
private RechnungRepository rechnung_repo;

@Autowired
private EmpfaengerRepository empf_repo;



//Get Mappings


@PostMapping ("/rechnungen")
@ResponseBody
public Rechnung rechnungSave (@RequestBody Rechnung r) {

     Rechnung r_save = rechnung_repo.save(r);
     return r_save;
}



//More get Mapping


}

Вот мое определение счета:

* 10 17 *

и вот Json я хотел бы опубликовать

{
"rechnungsnummer":"02552425",
"empfaenger": {
    "name" : "nnnnnn",
    "vorname" : "vvvvv"
    },

"artikels":{
    "artikel":{

        "preis":"12.33"
    }
"artikel":{

        "preis":"12.33"
    }
}
}

Любые указатели будут полезны. Спасибо.

1 Ответ

1 голос
/ 05 марта 2020

Имя свойства JSON по умолчанию является именем свойства Java, поэтому оно будет artikelliste в JSON.

Однако вы можете (и должны) указать JSON имя свойства с использованием следующей аннотации:

 @JsonProperty("artikels")
 private List <Artikel> artikelliste ...

@JsonIgnoreProperties может помочь вам обнаружить такие ошибки - в строгом режиме (ignoreUnknown = false) использование неизвестных свойств приведет к ошибке. Обычно каждый использует ignoreUnknown = true, но затем вам нужно добавить тесты , чтобы проверить, действительно ли данные правильно распределены в JSON и обратно.

Примечание:

  • Использование сущностей в качестве аргументов или типов результатов для веб-сервисов является плохой практикой.
  • Вместо этого следует использовать DTO (объект передачи данных), где вы можете контролировать то, что вы выставляете или принимаете, и отображать между DTO и сущностями.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...