でオブジェクトをデシリアライズするとき、私は、次のテストコードがあります。JsonConvert.DeserializeObjectへの呼び出しが2つのエラーを生成予期しないトークンJsonConvert.DeserializeObject
[TestClass]
public class TestJsonDeserialize
{
public class MyClass
{
[JsonProperty("myint")]
public int MyInt { get; set; }
[JsonProperty("Mybool")]
public bool Mybool { get; set; }
}
[TestMethod]
public void Test1()
{
var errors = new List<string>();
var json1 = "{\"myint\":1554860000,\"Mybool\":false}";
var json2 = "{\"myint\":3554860000,\"Mybool\":false}";
var i = JsonConvert.DeserializeObject<MyClass>(json2, new JsonSerializerSettings
{
Error = delegate (object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
{
Debug.WriteLine(args.ErrorContext.Error.Message);
errors.Add(args.ErrorContext.Error.Message);
args.ErrorContext.Handled = true;
}
});
Assert.IsTrue(errors.Count <= 1);
}
}
を。そのうちの1つは期待されているが、もう1つは期待されていない。 エラーは次のとおりです。
- JSON整数3554860000がInt32では大きすぎるか小さすぎます。パス 'myint'、行1、位置19。
- オブジェクトの逆シリアル化時に予期しないトークンがあります。パス 'Mybool'、1行目、34行目。
1番目のエラーは処理済みとマークされていますが、なぜ2番目のエラーがありますか? 私はすでにNewtonsoft.Json 8.0.2から9.0.1に更新しましたが、残っています。 最初の文字列(json2ではなくjson1)を渡すと、エラーはまったく発生しません。
workouround私のテストプロジェクトのために働く。どうもありがとう。私はあなたが提案したようにギトップに関する問題を報告しました。 – huha