ArrayList <Objeto> JSON

Estoy tratando de devolver datos JSON con mi restlet. Puedo devolver un JSON de un solo artículo con ...

import org.json.JSONObject;

Site aSite = new Site().getSite();   
JSONObject aSiteJson = new JSONObject(aSite);
return aSiteJson.toString();

Devuelve: {"nombre": "qwerty", "url": "www.qwerty.com"}

¿Cómo devuelvo JSON para el objeto ArrayList?

ArrayList<Site> allSites = new SitesCollection().getAllSites();   
JSONObject allSitesJson = new JSONObject(allSites);
return allSitesJson.toString();

Devoluciones: {"vacío": falso}

ArrayList<Site> allSites = new SitesCollection().getAllSites();   
JSONArray allSitesJson = new JSONArray(allSites);
return allSitesJson.toString();

Devoluciones: ["com.sample.Site@4a7140", "com.sample.Site@1512c2e", "com.sample.Site@2bba21", "com.sample.Site@c8d0b7"]

Aquí está mi clase de sitio

public class Site {
private String name;
private String url;

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getUrl() {
    return url;
}
public void setUrl(String url) {
    this.url = url;
}

public Site(String name, String url) {
    super();
    this.name = name;
    this.url = url;
}       

}

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta