Можете просто да напишете обвиващ клас така.
public class ContainerClass {
public List<students> Students {get;set;}
}
и сериализирайте това.
И така, това, което в крайна сметка бихте направили във вашия метод ListJson, е:
var studentDetails = new ContainerClass();
studentDetails.Students = ConvertDataTable<students>(ds.Tables[0]);
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(studentDetails);
Има ли смисъл в това?