Visual Studio在JSON文件中查找大于2147483647的Int值

时间:2017-12-29 21:38:24

标签: c# json visual-studio visual-studio-2015

在将一些JSON反序列化为C#对象时,我开始为我的一个Int32属性获取System.OverflowException:值太大或太小。我能够将有问题的json保存到文件中以进一步检查它并在单元测试中重现错误。应该永远不会有这样大或小的价值;我需要找到具有这个大值的特定JSON属性(以使底层属性变长)。问题是大约有5000行要排序。

根据我的研究,Visual Studio Find RegEx似乎不适合这种情况,因为它们似乎不比运算符大或小。搜索此文件的值大于2147483647的最佳方法是什么?

示例Json:

"id": "pmanc",
"operation": "UPDATE",
"ResourceIAQStats": {
  "resourceId": "pmanc",
  "resourceName": "Peter Manc",
  "resourceState": 7,
  "durationInStateMillis": 113888,
  "nHandledContacts": 68,
  "nPresentedContacts": 68,
  "avgTalkDuration": 181324,

修改

这是我用于解析JSON的C#方法,在尝试将JArray Children反序列化为通用对象时发生溢出异常。 Newtonsoft没有指定哪个对象(或属性)太大。

    public async Task<List<T>> GetStatsAsync<T>(string testJson)
    {
        var requestResult = JArray.Parse(testJson);
        return new List<T>(requestResult.Children()
            .Select(jo => jo[typeof(T).Name].ToObject<T>()));
    }

2 个答案:

答案 0 :(得分:2)

您是否可以在假设您没有其他10多位数的序列的情况下搜索\d{10}

答案 1 :(得分:-1)

我不明白为什么你认为你必须在Visual Studio中这样做。通过JSON对象进行递归应该是微不足道的(少于10行)Javascript,收集路径并在值大于阈值时打印路径。

您会发现此Q&amp; A有用:Iterate through object properties