IHttpActionResult avec chaîne JSON

J'ai une méthode qui à l'origine a renvoyé un HttpResponseMessage et je voudrais convertir ce retour IHttpActionResult.

Mon problème est que le code actuel est l'aide de JSON.Net pour sérialiser un complexe générique structure de l'arbre, ce qui n'est bien à l'aide d'un custom JsonConverter j'ai écrit le code fonctionne bien).

Voici de quoi il en retourne:

    string json = NodeToJson(personNode);

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
    response.Content = new StringContent(json, Encoding.UTF8, "application/json");

    return response;

La NodeToJson méthode est où la coutume convertisseur est en jeu ...

private static string NodeToJson(Node<Person> personNode) {

    var settings = new JsonSerializerSettings {
        Converters = new List<JsonConverter> { new OrgChartConverter() },
        Formatting = Formatting.Indented
    };

    return JsonConvert.SerializeObject(personNode, settings);

}

Remarque cette fonction retourne une string, au format JSON.

Si je passe ce IHttpActionResult, il semble échouer, indépendamment de ce que j'essaie. Je peux juste laisser (il fonctionne) mais je suis censé être en utilisant les meilleures pratiques pour ce et IHttpActionResult semble être ce que je devrais être en utilisant.

J'ai essayé de return Json(json); mais il en résulte non valide, unparsable JSON, sans doute parce qu'il essaie de faire une double conversion?

return Ok(json); résultats dans la chaîne JSON être enveloppé dans du XML.

Quelle est la bonne façon de le faire?

EDIT:

J'ai réussi à convertir chaque méthode dans ce projet d'utiliser IHttpActionResult maintenant, à l'exception de cette méthode particulière.

C'est une sérialisation d'un générique arbre en JSON. Quelle que soit la démarche que j'essaie, je serai de retour invalid JSON. Le HttpResponseMsessage approche fonctionne bien, mais je ne peux pas obtenir JSON valide de retour avec IHttpActionResult.

InformationsquelleAutor Patrick | 2016-03-26