ciao!

in una app android devo costruire e riempire da db locale un json con questa struttura:
codice:
{
  "accessLogs": [
    {
      "uuid": "",
      "accessType": "",
      "userId": 0,
      "loggedOn": "2019-11-12T09:04:22.925Z",
      "hospitalUnitId": 0,
      "workPlanTypeId": 0,
      "imei": ""
    }
  ],
  "receipts": [
    {
      "uuid": "",
      "userId": 0,
      "imei": "",
      "hospitalUnitId": 0,
      "workPlanTypeId": 0,
      "code": "",
      "number": "",
      "createdOn": "2019-11-12T09:04:22Z",
      "reports": [
        {
          "uuid": "",
          "roomId": 0,
          "reportedOn": "2019-11-12T09:04:22Z",
          "userId": 0,
          "imei": "",
          "ok": false,
          "issueTypes": [
            {
              "id": 0
            }
          ],
          "issueDescription": ""
        }
      ]
    }
  ]
}
al momento sto procedendo "a mano" con StringBuilder:
codice:
StringBuilder json = new StringBuilder();
json.append("{");

json.append("'accessLogs':[");
List<AccessLogs> al = dataSource.accessLogsDao.selectAll();
for (AccessLogs obj : al) {
    json.append("{");
    json.append("'uuid':").append(obj.uuid);
    json.append("'accessType':").append(obj.accessType);
    json.append("'userId':").append(obj.userId);
    json.append("'loggedOn':").append(obj.loggedOn);
    json.append("'hospitalUnitId':").append(obj.hospitalUnitId);
    json.append("'workPlanTypeId':").append(obj.workPlanTypeId);
    json.append("'imei':").append(obj.imei);
    json.append("},");
}
json.append("]");

json.append("}");

Log.e("JSON", json.toString());
ma non mi pare la soluzione migliore.
questi dati li devo poi spedire ad una API, e per farlo uso Volley.
qualche suggerimento??