此文转载自
http://www.dennydotnet.com/post/2007/09/A-DataTable-Serializer-for-ASPNET-AJAX.aspx,未作翻译。
A DataTable Serializer for ASP.NET AJAX, implements
JavaScriptConverter. Note that I did not implement a
Deserialize method since I am using this for read only data.
[code:c#]

/**//// <summary>
/// DataTable to JSON converter
/// </summary>

public class JavaScriptDataTableConverter : JavaScriptConverter
{

public override object Deserialize( IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer )
{
throw new NotImplementedException( "Deserialize is not implemented." );
}


public override IDictionary<string, object> Serialize( object obj, JavaScriptSerializer serializer )
{
DataTable dt = obj as DataTable;
Dictionary<string, object> result = new Dictionary<string, object>();


if( dt != null && dt.Rows.Count > 0 )
{
// List for row values
List<object> rowValues = new List<object>();


foreach( DataRow dr in dt.Rows )
{
// Dictionary for col name / col value
Dictionary<string, object> colValues = new Dictionary<string, object>();


foreach( DataColumn dc in dt.Columns )
{
colValues.Add( dc.ColumnName, // col name
( string.Empty == dr[dc].ToString() ) ? null : dr[dc] ); // col value
}

// Add values to row
rowValues.Add( colValues );
}

// Add rows to serialized object
result["rows"] = rowValues;
}

return result;
}


public override IEnumerable<Type> SupportedTypes
{
//Define the DataTable as a supported type.

get
{
return new System.Collections.ObjectModel.ReadOnlyCollection<Type>(
new List<Type>(

new Type[]
{ typeof( DataTable ) }
)
);
}
}
}


[/code]
And how do you implement this? In a web service...
That's all there is to it! Just deserialize to an object on the client-side and you're good to go!
Side Note: There is a DataTable serializer from Microsoft in the ASP.NET Futures package.