Asignación de JSON con nombre de objeto variable

Soy bastante nuevo en JSON, y miré a mi alrededor tratando de averiguar qué hacer, pero no estoy seguro de entenderlo. Estoy haciendo una llamada API externa que devuelve:

2015-12-21 01:22:09 INFO  RiotURLSender:60 - Total json: 
{"USERNAME":{"profileIconId":984,"revisionDate":1450655430000,"name":"USERNAME2","id":38584682,"summonerLevel":30}}

Donde 'USERNAME' (Y USERNAME2, que puede ser muy diferente a USERNAME) variará según lo que pase los parámetros de la llamada. Estaba usando Jackson Object Mapper para mapear los valores individuales dentro del objeto USERNAME, pero no me di cuenta de que también tenía que mapear el objeto.

He estado usando anotaciones en los DTO como:

@JsonProperty("profileIconId")
private Long profileIconId;

y mapeo usando:

summonerRankedInfoDTO = mapper.readValue(jsonString, SummonerRankedInfoDTO.class);

¿Cómo mapeo usando un valor de USERNAME que cambia cada vez?

Además, esto parece un poco extraño, ¿es esta mala práctica tener la clave variable real en lugar de solo tener la misma clave y un valor diferente?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta