首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JArray中选择具有特定密钥的属性- VB.Net

从JArray中选择具有特定密钥的属性- VB.Net
EN

Stack Overflow用户
提问于 2021-05-13 00:19:47
回答 1查看 213关注 0票数 0

我在这些屏幕上有一系列的屏幕和字段位置,我想解析它们。

我尝试过使用SelectToken("$.[?('Field-1')]),并得到了一个错误,多个令牌正在返回。我也尝试过不同口味的Linq,但无法得到任何合作。

我对.Net和VB相当陌生,而且有点挣扎。我甚至可能做错了,有更好的方法来处理它。我在UIPath工作,所以我只需要展示一些psuedo代码。

这里是一些示例JSON。我确实完全控制了这个结构,所以如果有关于重组的建议,我很乐意招待他们。

代码语言:javascript
复制
    [
    {
        "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。

目标

代码语言:javascript
复制
configData = json.Deserialize

screenConfig = configData.Select("Screen-2")

Array ValidationInfo = screenConfig("Field-1")("FieldInfo")("Validation").ToList

-----
List Contents: YES, NO

我已经考虑过改变结构,以便我们有一个特定的字段的屏幕名称,然后我认为我可以得到它的选择标记,但我没有真正看到的价值。看起来会是这样的。

代码语言:javascript
复制
{
    "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"
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-25 23:46:29

我能够使用SelectToken获得我所需要的东西。我只是不正确地使用JSONPath。下面的键是我感兴趣的键,所以我对它进行过滤,最后的.*允许我只带回它里面的内容。

解决方案:data.SelectToken("$.[?(@."+ key + ")].*")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67512479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档