Извлечение массива JSON из запроса в Джерси - PullRequest
0 голосов
/ 13 марта 2019

Предполагается, что есть REST API для создания ученика

@POST
@Path("/student")
public Response createStudent(CreateStudentRequest request) {
  ...
}

Здесь допустим, что CreateStudentRequest выглядит следующим образом:

@Getter
@Setter
public class CreateStudentRequest {
  @JsonProperty("name")
  private String name;

  @JsonProperty("age")
  private int age;

  @JsonProperty("subjects")
  private String subjects;

  private List<Subject> subjectList;
}

@NoArgsConstructor
@AllArgsConstructor
public enum Subject {
  PQR("pqr"),
  XYZ("xyz");

  private String identifier;

  public static Subject fromString(final String value) {
    for (final Subject subject : Subject.values()) {
      if (value.equalsIgnoreCase(subject.identifier)) {
        return subject;
      }
    }
    throw new IllegalArgumentException("Unknown Subject:" + value);
  }
}

При вызове API передаваемый json содержит разделенный запятыми список предметов для студента (это фиксируется на основе контракта API и не может быть изменено на список строк):

POST /student
{
  "name" : "abc",
  "age" : 25,
  "subjects" : "pqr, xyz"
}

Теперь я хочу заполнить параметр subjectList в экземпляре Student, когда экземпляр Student создается на основе значений, разделенных запятыми в subject строка.

Есть ли какая-нибудь аннотация, которая может помочь мне сделать это - что-то, что вызывает заполнение списка, как только строке subject будет присвоено значение?

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

Есть предложения по этому поводу?

...