¿Cómo usar el parámetro de consulta representado como JSON con Spring RestTemplate?
Necesito hacer una solicitud a un punto final HTTP que tenga un parámetro de consulta representado como JSON usando Spring RestTemplate.
restTemplate.getForObject(
apiRoot + "/path" + "?object={myObject}",
Response.class,
new MyObject())
Aqui necesitoMyObject
para ser convertido a JSON (y codificado por URL obviamente). PeroRestTemplate
solo lo convierte aString
contoString
llame en su lugar.MyObject
es convertible a JSON por Jackson.UriComponentsBuilder
se comporta de la misma manera:
UriComponentsBuilder.fromHttpUrl(apiRoot)
.path("/path")
.queryParam("object", new MyObject()))
.queryParam("access_token", accessToken)
.toUri()
¿Hay alguna manera de evitar llamarObjectMapper.writeValueAsString
por las manos?
Actualización: para aclarar, en el resultado necesito tener?object={"key":42}
en mi URI (o en forma codificada en URL?object=%7B%22key%22%3A42%7D
) dadoMyObject
tiene una propiedadkey
con valor igual a42
.