1

このJSON文字列があるとしましょう

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

今パスはタイプミスです。クラスにないキー(パス)がある場合、シリアル化コード(json.netまたはsystem.webに組み込まれたコードを使用できます)で例外をスローしたいと思います。このようにして、ばかげたタイプミスがフラストレーションを引き起こすことはありません。

4

1 に答える 1

5

Json.Net シリアライザーの場合、JsonSerializerSettingsでMissingMemberHandlingを使用できます。

[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; }
}
于 2012-10-24T00:34:23.577 に答える