Znalazłem trochę dziwnego problemu przy użyciu WebAPI i JSON.Net. Po odseparowaniu JSON, który został zgłoszony do mojego interfejsu API, tracę precyzję! Przesyłam dziesiętny do 3 miejsc po przecinku, ale kiedy wartości materializują się w moim obiekcie, to tylko do 2 miejsc po przecinku!WebAPI, JSON.Net i utrata dokładności dziesiętnej
JSON przesłać wygląda następująco:
{
id: 1,
name: 'mock data',
value: 123.456
}
ten jest związany z klasy, który wygląda mniej więcej tak:
public class MockObject {
public int Id { get; set; }
public string Name { get; set; }
public decimal Value { get; set; }
}
Tylko dla kompletności Jest to w zasadzie to, co moja metoda WebAPI wygląda :
public HttpResponseMessage Post (MockObject data) {
// do something with the value here and return the relevant response
}
Przesyłam dane za pomocą żądania ajax JQuery, ale widzę opublikowane wartości są dokładnie takie, jakich oczekuję podczas sprawdzania wartości w narzędziach Chrome przed przesłaniem i w skrzypcach, gdy już przejdą "przez przewód".
Kiedy robi się coś z materializowanym obiektem w metodzie Post
, wartość "Wartość" wynosi 123,45.
Jeśli prześlę 2 lub mniej miejsc po przecinku (tj. 123,4 lub 123,45), wartość zostanie zdekseralizowana zgodnie z oczekiwaniami, jednak jeśli prześlę więcej niż 2 miejsca po przecinku (tj. 123.456 lub 123.4567 itd., Wartość zawsze będzie rozserializowana do 123,45.
Ktoś jeszcze natknąć się ten problem? Wszelkie sugestie?