Ciao alessio,
Non capisco il perchè di quella concatenazione (tra l'altro è sbagliato chiamare il toString....).
Puoi fare tutto direttamente con la libreria da te indicata.
codice:
JSONObject object = new JSONObject();
object.put("data1", "value1");
object.put("data2", "value2");
object.put("dat_agg_img_dam", "value3");
JSONObject container = new JSONObject();
container.put("id", "row.id");
container.put("dataset", "row.dataset");
container.put("data", object);
Questo da come output (System.out.println(container.toJSONString())
{"id":"row.id","dataset":"row.dataset","data":{"da ta1":"value1","data2":"value2","dat_agg_img_dam":" value3"}}