You are posting a json object and not a string.
So you can technically convert you json into a string with:
var jsonStr = JSON.stringify(json);
Instead of doing that, try using FormCollection:
public ActionResult UpdateCommunicationSettings(FormCollection formData)
{
}
You need to drop the serializing.
P.s. you can use a class with the same schema as the json you have on you client, and it will deal with the binding.