<p>What is the correct way to convert ASP.NET SOAP-based web services to JSON-based responses?
...And then call these from jQuery?</p>

<p>What are "best practices" when integrating jQuery based AJAX and ASP.NET?
Articles? Books?</p>

JSON conversion to .NET classes can be done with
System.Runtime.Serialization
and
System.Runtime.Serialization.JSON
. I suspect you're more interested in setting up function calls from client to server. I think it is worth trying
this tutorial
.
In this tutorial, you'll need to add a webservice '.asmx' file.  In the asmx file you will be able to create functions callable from client script.  Your ASP.NET pages can also reference client script generated to make calling the .asmx functions.
If you actually want to do JSON serialization though, you could also use the following:
```
```
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

public class JsonSerializer
{
    // To make a type serializeable, mark it with DataContractAttribute
    // To make a member of such types serializeable, mark them with DataMemberAttribute
    // All types marked for serialization then need to be passed to JsonSerialize as
    // parameter 'types'

    static public string JsonSerialize(object objectToSerialize, params Type[] types)
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(
            types[0], types.Skip(1));

        MemoryStream ms = new MemoryStream();
        serializer.WriteObject(ms, objectToSerialize);
        ms.Seek(0, SeekOrigin.Begin);
        StreamReader sr = new StreamReader(ms);
        return sr.ReadToEnd();
    }
}
```
```