C# 如何检查json字符串中是否存在特定范围的键

C# 如何检查json字符串中是否存在特定范围的键,c#,json,C#,Json,我有以下json字符串数据作为输入: string json="{"-1":0,"78":6,"79":6,"80":2,"81":16777215,"82":16777215,"83":1,"84":0,"85":0,"86":"2023/05/07","87":0,"88":0,"89":1,"90":1,"124":1,"16":5,"17":null,"18":null,"19":0,"20":2,"21":2000,"22":0,"23":0,"24":0,"25":0,"26":0,

我有以下json字符串数据作为输入:

string json="{"-1":0,"78":6,"79":6,"80":2,"81":16777215,"82":16777215,"83":1,"84":0,"85":0,"86":"2023/05/07","87":0,"88":0,"89":1,"90":1,"124":1,"16":5,"17":null,"18":null,"19":0,"20":2,"21":2000,"22":0,"23":0,"24":0,"25":0,"26":0,"109":0,"110":0,"29":0,"30":0,"31":0,"32":2000,"33":13710,"34":15710,"135":null}"
我想检查上面的任何键是否有1到150以外的值,以便返回false。如何在c中实现这一点**条件:我不想在这里使用Json反序列化程序。我已尝试使用jSon。包含\-1\:
这只适用于一个键,即:-1。相反,我想要的是,从1到150,理想情况下,你不会自己解析这个,但是因为你不能使用解析器,我想你可以使用正则表达式来解析

给定

选择1 解释

选择2 具有删除引号的负和正查找

解释

更新

从评论中可以看出,如果其中一个值被括在引号中,检查冒号可能是谨慎的

在这种情况下,您可能会将图案修改为以下内容

"-?\d+"(?=:)
(?<=")-?\d+(?<!":)

为什么不想反序列化?您必须编写逻辑来解析字符串,这是反序列化程序可以帮助您完成的。@Black Frog整个逻辑都写在SSIS脚本组件中。因为反序列化使用newtonsoft dll,其在脚本组件内的导入很麻烦。有人能帮我处理一下>jSon.Contains \-1\:这里我想要一个从1到150的范围,而不是-1。你认为建议如何?=:,作为一种可能的解决办法,如果右边的值也有可能出现在双引号中的话?但正如我测试的那样,这不能识别特殊字符it@nagaraj有什么特别的characters@TheGeneral特殊字符,如@@nagaraj您的意思是在您的输入中有特殊字符吗?这个答案不起作用?
var isOutOfRange = Regex.Matches(input, @"""-?\d+""")
                        .Cast<Match>()
                        .Select(x => int.Parse(x.Value.Trim('"')))
                        .Any(x => x < 1 || x > 150);
var isOutOfRange = Regex.Matches(input, @"(?<="")-?\d+(?<!"")")
                        .Cast<Match>()
                        .Select(x => int.Parse(x.Value))
                        .Any(x => x < 1 || x > 150);
"-?\d+"(?=:)
(?<=")-?\d+(?<!":)