在将一些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>()));
}
答案 0 :(得分:2)
您是否可以在假设您没有其他10多位数的序列的情况下搜索\d{10}
?
答案 1 :(得分:-1)
我不明白为什么你认为你必须在Visual Studio中这样做。通过JSON对象进行递归应该是微不足道的(少于10行)Javascript,收集路径并在值大于阈值时打印路径。
您会发现此Q&amp; A有用:Iterate through object properties