Преобразуйте параметры запроса JSON в объекты с JAX-RS

У меня есть ресурс JAX-RS, который получает его параматерей как строку JSON как это:

http://some.test/aresource?query={"paramA":"value1", "paramB":"value2"}

Причина использовать JSON здесь, то, что объект запроса может быть довольно сложным в реальных вариантах использования.

Я хотел бы преобразовать строку JSON в объект Java, dto в примере:

@GET 
@Produces("text/plain")
public String getIt(@QueryParam("query") DataTransferObject dto ) {
    ...
}

JAX-RS поддерживает такое преобразование из JSON, переданного как параметрический усилитель запроса объектам Java?

27
задан deamon 23 April 2010 в 09:40
поделиться

1 ответ

Да, вы можете это сделать, но вам нужно будет написать код преобразования самостоятельно. К счастью, это просто, вам просто нужно написать класс, который имеет общедоступный конструктор String для выполнения преобразования. Например:

public class JSONParam {
    private DataTransferObject dto;

    public JSONParam(String json) throws WebApplicationException {
        try {
            // convert json string DataTransferObject and set dto
        }
        catch (JSONException e) {
            throw new WebApplicationException(Response.status(Status.BAD_REQUEST)
                    .entity("Couldn't parse JSON string: " + e.getMessage())
                    .build());
        }
    }

    public DataTransferObject getDTO() {
        return dto;
    }
}

Затем вы можете использовать:

@GET 
@Produces("text/plain")
public String getIt(@QueryParam("query") JSONParam json) {
    DataTransferObject dto = json.getDTO();
    ...
}
16
ответ дан 28 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: