我在这些屏幕上有一系列的屏幕和字段位置,我想解析它们。
我尝试过使用SelectToken("$.[?('Field-1')]),并得到了一个错误,多个令牌正在返回。我也尝试过不同口味的Linq,但无法得到任何合作。
我对.Net和VB相当陌生,而且有点挣扎。我甚至可能做错了,有更好的方法来处理它。我在UIPath工作,所以我只需要展示一些psuedo代码。
这里是一些示例JSON。我确实完全控制了这个结构,所以如果有关于重组的建议,我很乐意招待他们。
[
{
"Screen-1": {
"Field-1": {
"FieldInfo": {
"Row": 16,
"Start": 17,
"Length": 8,
"Validation": [],
"Format": {}
},
"TitleInfo": {
"Row": 16,
"Start": 2,
"Length": 14,
"ExpectedValue": "Field-1"
}
},
"Field-2": {
"FieldInfo": {
"Row": 17,
"Start": 17,
"Length": 8,
"Validation": [],
"Format": {}
},
"TitleInfo": {
"Row": 17,
"Start": 2,
"Length": 14,
"ExpectedValue": "Field-2"
}
}
}
},
{
"Screen-2": {
"Field-1": {
"FieldInfo": {
"Row": 2,
"Start": 7,
"Length": 4,
"Validation": [
"YES",
"NO"
],
"Format": {}
},
"TitleInfo": {
"Row": 2,
"Start": 2,
"Length": 4,
"ExpectedValue": "Field-1"
}
},
"Field-2": {
"FieldInfo": {
"Row": 2,
"Start": 16,
"Length": 3,
"Validation": [],
"Format": {}
},
"TitleInfo": {
"Row": 2,
"Start": 12,
"Length": 4,
"ExpectedValue": "Field-2"
}
}
}
}
]我想要做的是选择我想要从哪个屏幕提取,然后从那里索引到我需要的每个字段,并获取特定的值。这需要从Python、C#和VB.Net中消费,但我目前最关心的是VB.Net。
目标
configData = json.Deserialize
screenConfig = configData.Select("Screen-2")
Array ValidationInfo = screenConfig("Field-1")("FieldInfo")("Validation").ToList
-----
List Contents: YES, NO我已经考虑过改变结构,以便我们有一个特定的字段的屏幕名称,然后我认为我可以得到它的选择标记,但我没有真正看到的价值。看起来会是这样的。
{
"Screen": "Screen-1",
"Data": {
"Field-1": {
"FieldInfo": {
"Row": 16,
"Start": 17,
"Length": 8,
"Validation": [],
"Format": {}
},
"TitleInfo": {
"Row": 16,
"Start": 2,
"Length": 14,
"ExpectedValue": "Field-1"
}
},
"Field-2": {
"FieldInfo": {
"Row": 17,
"Start": 17,
"Length": 8,
"Validation": [],
"Format": {}
},
"TitleInfo": {
"Row": 17,
"Start": 2,
"Length": 14,
"ExpectedValue": "Field-2"
}
}
}
}发布于 2021-05-25 23:46:29
我能够使用SelectToken获得我所需要的东西。我只是不正确地使用JSONPath。下面的键是我感兴趣的键,所以我对它进行过滤,最后的.*允许我只带回它里面的内容。
解决方案:data.SelectToken("$.[?(@."+ key + ")].*")
https://stackoverflow.com/questions/67512479
复制相似问题