2017-10-17 4 views
0

Dans mon application .net j'utilise System.Web.Mvc 5.2.3.0. Mon client est l'affichage en JSON avec le type de contenu: 'application/json'Comment puis-je obtenir asp.net mvc pour reconnaître des décimales dans json?

{From: "EUR", To: "USD", Rate: 0.00001} 

Au moment où mon contrôleur reçoit ce

[HttpPut(), Route("/ExchangeRate/{exchkey}")] 
public HttpResponseMessage PutCurrencyExchange(string exchkey, [FromBody()] JObject jsonData) 
{... 

Taux du jobject est une chaîne "1E-05".

J'ai lu sur les convertisseurs personnalisés https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Converters.htm et contrat résolveurs https://www.newtonsoft.com/json/help/html/CustomContractResolver.htm

J'ai trouvé un certain nombre d'exemples très anciens pour désérialisation des objets fortement typés. Cependant, j'espère qu'il me manque juste une simple modification de configuration qui permettra à mon objet JObject de représenter correctement la décimale sous forme décimale. Note: Je reconnais que si le client stringifie la valeur, il l'analysera correctement. Cependant, je ne suis pas en mesure de dicter que les consommateurs de mes points de terminaison ficelent les valeurs en premier.

+0

Mon erreur ... le taux est à venir en tant Double, pas une chaîne. La fenêtre de la montre ne représente que 1E-05. En aval, ceci était en train d'être converti en une chaîne de caractères et j'essayais de convertir en décimal et cela échouait. Ma faute. –

Répondre

1

J'ai eu plus de chance avec une action de contrôleur contenant des paramètres individuels plutôt que du corps si vous êtes en mesure de changer cette

+0

Vrai, puisque définir '(chaîne From, chaîne To, double Rate)' en tant que paramètres est plus facile et plus facile à maintenir par rapport '' [FromBody()] JObject jsonData'. –

+0

J'apprécie la contribution. Toutefois, cela peut être un problème dans mon application pour de nombreux points de terminaison où les données postées doivent être dans le corps. –