Sérialisation JSON MVC3: comment contrôler les noms de propriété?

Je veux sérialiser un objet simple en JSON:

public class JsonTreeNode
{
    [DataMember(Name = "title")]
    public string Title { get; set; }

    [DataMember(Name = "isFolder")]
    public bool IsFolder { get; set; }

    [DataMember(Name = "key")]
    public string Key { get; set; }

    [DataMember(Name = "children")]
    public IEnumerable<JsonTreeNode> Children { get; set; }

    [DataMember(Name = "select")]
    public bool SelectedOnInit { get; set; }
}

Mais à chaque fois que je le fais:

return Json(tree, JsonRequestBehavior.AllowGet);

Les noms de propriété ne sont pas comme spécifié dans le [DataMember] section, mais similaires à ceux définis directement dans la classe, par exemple en cas de SelectOnInit il n'est pas select mais SelectOnInit.

Ce que je fais mal?

source d'informationauteur xsl