Use Map of type Map<String, Object>. This not really nice solution uses no Annotation. I just want to show other possibility how to do avoid json wrapping:
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
List<LogDTO> logs = new ArrayList<LogDTO>();
logs.add(new LogDTO(1, true));
logs.add(new LogDTO(2, false));
logs.add(new LogDTO(3, true));
map.put("logs", logs);
map.put("meta", new Meta(33));
Gson gson = new GsonBuilder().create();
String json = gson.toJson(map);
LogsDTO dto = gson.fromJson(json, LogsDTO.class);
System.out.println(json);
System.out.println(dto);
}
produces:
{
"meta":{
"id":33
},
"logs":[
{
"id":1,
"archived":true
},
{
"id":2,
"archived":false
},
{
"id":3,
"archived":true
}
]
}
and
LogsDTO [logs=[Log [id=1, archived=true], Log [id=2, archived=false], Log [id=3, archived=true]], meta=Meta [id=33]]