Mam klasySerializing dziesiętny na JSON, jak zaokrąglić?
public class Money
{
public string Currency { get; set; }
public decimal Amount { get; set; }
}
i chciałbyś go do serializacji JSON. Jeśli używam JavaScriptSerializer
uzyskać
{"Currency":"USD","Amount":100.31000}
Ponieważ API muszę odpowiadać na potrzeby JSON ilościach z maksymalnie dwóch miejsc po przecinku, czuję powinno być możliwe, aby w jakiś sposób zmieniają sposób, w jaki JavaScriptSerializer
serializes pole dziesiętny, ale nie mogę się dowiedzieć jak. Istnieje SimpleTypeResolver, który możesz przekazać w konstruktorze, ale działa tylko na typach, o ile mogę to zrozumieć. Numer JavaScriptConverter, który można dodać za pomocą RegisterConverters (...), wydaje się być wykonany dla Dictionary
.
Chciałbym dostać
{"Currency":"USD","Amount":100.31}
po I serializacji. Również przejście do podwójnego nie wchodzi w rachubę. I prawdopodobnie potrzebuję trochę zaokrąglić (100.311 powinno stać się 100.31).
Czy ktoś wie, jak to zrobić? Czy istnieje alternatywa dla JavaScriptSerializer
, która pozwala bardziej szczegółowo sterować serializacją?
Czy chcesz tylko zaokrąglić kwotę podczas serializacji? Możesz ewentualnie dodać inną właściwość do klasy i serializować ją zamiast właściwości Amount i oznaczyć oryginalną właściwość Amount, aby nie była serializowana. –
@MarkSherretta Tak, chcę tylko zaokrąglić podczas serializacji do JSON. Czy mogę to zrobić bez przekształcania go w ciąg znaków ("Ilość": "100.31")? Zaokrąglone podwójne pole do serializacji? – Halvard
Najlepiej, aby zmiana była tylko w jednym miejscu. W moim przypadku można to zrobić dla wszystkich liczb dziesiętnych, które są serializowane (nie tylko w tym obiekcie). – Halvard