2 votes

Retourner le JSON TitleCase à partir d'un appel API, utiliser camelCase pour le reste.

Mon API Web est actuellement configurée de manière à renvoyer tous les JSON au format camelCase, avec le code suivant dans l'API WebApiConfig :

var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        formatter.SerializerSettings.ContractResolver =
            new 
Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();

Et cela fonctionne à merveille. Cependant, j'utilise le plugin jQuery Datatable et je sauvegarde/charge l'état par le biais de mon API, et celle-ci exige que les données soient renvoyées au format TitleCase. Il est évident que je ne vais pas réécrire l'ensemble de mes applications pour qu'elles acceptent le format Json TitleCase. LoadState route uniquement pour renvoyer le format TitleCase.

J'ai essayé des choses comme :

[HttpGet]
[Route("api/Controller/LoadState")]
public IHttpActionResult LoadState()
{
    var state = _eService.LoadState(UserProfile.IndividualId);

    //requires title cased object
    var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
    json.SerializerSettings.ContractResolver = new DefaultContractResolver();

    return Ok(state);
}

Mais cela semble régler l'ensemble de l'application sur TitleCase et écraser mes paramètres dans le fichier de configuration de l'application. WebApiConfig . Quelqu'un a-t-il des recommandations ?

3voto

Amy Points 8019

Utilice

var serializerSettings = new JsonSerializerSettings()
{ 
    ContractResolver = new DefaultContractResolver() 
};
// set any other settings here

return Json(state, serializerSettings);

En Json est ce que vous voulez. Il vous permet de spécifier des paramètres de sérialisation personnalisés pour cet appel .

Documentation MSDN pour ApiController.Json

0voto

Debasish Points 1

J'ai été confronté à une situation similaire, j'y suis parvenu en faisant quelque chose comme ceci :

HttpResponseMessage response = Request.CreateResponse(System.Net.HttpStatusCode.OK, JsonConvert.SerializeObject(test, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver() }));

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X