JsonConvert.DeserializeObject在uint64上抛出异常,返回null对象

时间:2015-11-25 06:46:29

标签: c# json json.net win-universal-app

我正在使用新发布的Halo API来制作通用Windows应用程序,该应用程序将随着时间的推移显示一些玩家的CSR数据。数据以JSON格式从API返回,但其中一个端点返回一个ulong / uint64,它正在绊倒Json.net的默认解串器。我得到一个关于整数“对于int64来说太大或太小”的异常,并且看着JSON,我确实得到的数字大于int64。但是,由于我对数据的特定部分不感兴趣,我希望只是跳过异常并保留其余的数据。我正在反序列化为动态对象,因为我希望保留并使用大量数据。但是,由于JsonConvert.DeserializeObject返回null(调用自定义错误处理程序),因此通过将其标记为处理不起作用来跳过异常。

以下示例使用导致问题的JSON片段:

    private async void RetrievePlaylistData()
    {
        string fakeJson = "{\"Data4\": 9414319071796913811}";

        JsonSerializerSettings settings = new JsonSerializerSettings();
        settings.Error = delegate (object sender, ErrorEventArgs args)
        { 
            var currentError = args.ErrorContext.Error.Message;
            args.ErrorContext.Handled = true;
        };

        dynamic playlist = JsonConvert.DeserializeObject(fakeJson, settings);
    }

是否有人建议如何更好地处理异常或正确解析数据以便我可以获得正确的动态对象?或者数据合同是我最好的选择吗?

0 个答案:

没有答案