Lombok String Array Property - PullRequest
       8

Lombok String Array Property

0 голосов
/ 07 апреля 2020

Можно ли использовать значение массива из объекта JSON в качестве значения lombok. Например, тело

{
"associatedCompanyIds": [                                                                                                                                                                                                                 
      332510120384                                                                                                                                                                                                                              
    ]
}

Как

@lombok.value
private static class Payload{
    private List<String> associatedCompanyIds; 
}

Я знаю, что это не сработает, но я пытаюсь сделать что-то похожее на это, чтобы я мог извлечь это первое значение массива.

1 Ответ

0 голосов
/ 08 апреля 2020

Это работает практически из коробки. Единственное, что вам нужно сделать, это посоветовать lombok сгенерировать аннотацию @java.beans.ConstructorProperties, чтобы Джексон знал, какой параметр конструктора использовать для какого значения JSON. Просто создайте lombok.config в папке вашего проекта root с таким содержимым:

lombok.anyConstructor.addConstructorProperties = true 
config.stopBubbling = true

Недостатком является то, что Джексон передает ArrayList, который является изменяемым. Поэтому, если вам нужен действительно неизменяемый класс значений, вы должны использовать lombok @Builder с @Singular:

@Builder(setterPrefix = "with")
@JsonDeserialize(builder = Payload.PayloadBuilder.class)
@Value
public class Payload {
    @Singular
    private List<String> associatedCompanyIds;
}

Вам даже не нужен lombok.config с этим подходом, но вам нужно в наименьший ломбок v1.18.12 (из-за setterPrefix).

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