1

假设我们有以下请求对象:

public class UserRequest
{
    public DateTime? Birthday { get; set; }
    public bool DeservesGift { get; set; }
}

并尝试将以下 json 发布到给定的 url:

{ 
    "Birthday": "A late summer night",
    "DeservesGift": "No way!"
}

我希望有某种例外。相反,该服务会接收一个带有生日和DeservesGift的UserRequest实例。nullfalse

为什么是这样?
我们如何知道他们是否尝试将生日设置为 null,这应该会导致 200 ok,而不是尝试将其设置为其他值,这会导致 400 Bad 请求?因为现在我们将生日设置为 null 并响应 200 ok,这是不对的......

4

1 回答 1

1

静态对象JsConfig有一个ThrowOnDeserializationError默认为 false 的属性。将其设置为 true 将SerializationException在上面的示例中导致 a。

JsConfig.cs,第 343 行->:

    /// <summary>
    /// Gets or sets a value indicating if the framework should throw serialization exceptions
    /// or continue regardless of deserialization errors. If <see langword="true"/>  the framework
    /// will throw; otherwise, it will parse as many fields as possible. The default is <see langword="false"/>.
    /// </summary>
    private static bool? sThrowOnDeserializationError;
    public static bool ThrowOnDeserializationError { }
于 2013-05-23T11:40:51.630 回答