我正在参与的项目开始使用Json.Net库。
然而,我刚刚发现json.net对字符串类型很“宽松”。
以下是一个例子:
DTO类
[JsonObject]
public class DTO
{
[JsonProperty]
public string type;
}
反序列化
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));
}
}
这将把'type'属性反序列化为“True”。然而,我期望它会失败并抛出异常,因为存在类型不匹配的情况。如果我在json中用1代替true,它也会做同样的事情。属性“type”的值将是“1”。
问题:
- 有办法强制执行严格的序列化吗?
- 除了字符串之外,是否还有其他具有隐式转换的类型,就像我们在这里看到的那样?
JF