Przy projekcie, nad którym pracuję, zaczęliśmy używać biblioteki Json.Net.Json.net luźna kontra deserializacja typu surowego
Jednak właśnie się dowiedziałem, że json.net jest "luźny" na typie łańcucha.
Oto przykład:
DTO klasa
[JsonObject]
public class DTO
{
[JsonProperty]
public string type;
}
deserializacji
byte[] rawBody = GetBytes(@"{""type"":true}");
using (MemoryStream ms = new MemoryStream(rawBody))
{
using (StreamReader sr = new StreamReader(ms))
{
var serializer = new JsonSerializer();
return serializer.Deserialize(sr, typeof(DTO));
}
}
To będzie deserializować 'typem' atrybutów jak "True". Jednak oczekiwałbym, że to się nie powiedzie i wyrzuci wyjątek, ponieważ istnieje niedopasowanie typu. Robi to samo, jeśli zastąpię true przez 1 w jsonie. Właściwością "typ" właściwości będzie "1".
pytania:
Czy istnieje sposób, aby wymusić ścisłe serializacji?
Czy istnieją inne typy niż ciąg, które mają domyślną konwersję, tak jak to, co tu widzimy?
Dziękuję.
JF