如果JSON密钥未知,会出现异常吗?

时间:2012-10-24 00:28:26

标签: .net json

假设我有这个JSON字符串

{"name": "myname", "id":12345, "passs":"configpass"}

现在通过是一个错字。我喜欢我的序列化代码(我可以使用json.net或system.web中的内置代码)如果它有一个不在我班级的密钥(passs),则抛出异常。这种愚蠢的错别字不会引起挫折。

1 个答案:

答案 0 :(得分:5)

对于Json.Net序列化程序,您可以使用MissingMemberHandling

中的JsonSerializerSettings
[TestFixture]
public class JsonTests
{
    [TestCase(@"{""name"": ""myname"", ""id"":12345, ""passs"":""configpass""}", ExpectedException = typeof(JsonSerializationException))]
    [TestCase(@"{""name"": ""myname"", ""id"":12345, ""pass"":""configpass""}")]
    public void TestName(string arg1)
    {
        JsonSerializer jsonSerializer = JsonSerializer.Create(
            new JsonSerializerSettings {MissingMemberHandling = MissingMemberHandling.Error});
        Credentials credentials = jsonSerializer.Deserialize<Credentials>(new JsonTextReader(new StringReader(arg1)));
    }
}

public class Credentials
{
    public string Name { get; set; }
    public int Id { get; set; }
    public string Pass { get; set; }
}