Ho riscontrato un problema strano utilizzando WebAPI e JSON.Net. Quando decodificando JSON che è stato inviato alla mia API, mi sembra che stia perdendo la precisione! Sto inviando il decimale a 3 cifre decimali, ma quando i valori si materializzano nel mio oggetto è solo a 2 cifre decimali!WebAPI, JSON.Net e perdita della precisione decimale
Il JSON presento assomiglia a questo:
{
id: 1,
name: 'mock data',
value: 123.456
}
Questo è destinato ad una classe che sembra qualcosa di simile:
public class MockObject {
public int Id { get; set; }
public string Name { get; set; }
public decimal Value { get; set; }
}
Solo per completezza questo è fondamentalmente ciò che il mio metodo WebAPI assomiglia :
public HttpResponseMessage Post (MockObject data) {
// do something with the value here and return the relevant response
}
sto trasmettendo i dati attraverso una richiesta ajax JQuery, ma posso vedere la postato i valori sono esattamente come mi aspetto quando ispeziono i valori negli strumenti di chrome dev prima di inviarli e in fiddler dopo che sono passati "over the wire".
Quando si ottiene qualcosa con l'oggetto materializzato nel metodo Post
, il valore di "Valore" è 123.45.
Se invio 2 o meno cifre decimali (ad esempio 123.4 o 123.45) il valore viene de-serializzato come previsto, tuttavia se invio più di 2 posizioni decimali (ad esempio 123.456 o 123.4567 ecc., Il valore viene sempre deserializzato a 123.45.
Chiunque altrimenti incontrato questo problema? Eventuali suggerimenti?