Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用特定键从JArray中选择属性-VB.Net_Vb.net_Json.net - Fatal编程技术网

使用特定键从JArray中选择属性-VB.Net

使用特定键从JArray中选择属性-VB.Net,vb.net,json.net,Vb.net,Json.net,我有一系列的屏幕和我想要解析的屏幕上的字段位置 我尝试使用SelectToken$.[?'Field-1'],但收到一个错误,多个令牌返回。我也尝试过不同口味的Linq,但没有任何合作 我对.Net和VB还比较陌生,有点挣扎。我甚至可能在这件事上做错了,有更好的方法来处理它。我在UIPath中工作,所以我只有一些psuedo代码要显示 下面是一些JSON示例。我完全控制着这个结构,所以如果有重组的建议,我很乐意接受他们 [ { "Screen-1&quo

我有一系列的屏幕和我想要解析的屏幕上的字段位置

我尝试使用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

目标:

我已经考虑过改变结构,这样我们就有了一个特定的屏幕名称字段,然后我想我可以为它获取selecttoken,但我真的看不到其中的价值。看起来像这样

{
    "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"
            }
        }
    }
}

我能够使用SelectToken获得我所需要的东西。我只是错误地使用了JSONPath。下面的键是我感兴趣的键,所以我根据它进行过滤,最后的.*允许我只返回其中的内容

解决方案:数据。选择令牌$.[?@.+key+]*

{
    "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"
            }
        }
    }
}