我正在UIPath中工作,并试图为一个库组合一个JSON配置文件。我对VB.Net中可以使用的功能有点手足无措,但我想按环境过滤我的属性。我能够成功地过滤掉我不关心的环境,但我坚持使用JSON结构最高级别的现有环境属性。在我知道我想保留哪一个之后,我也想把它扔掉。
起点
{
"Development": {
"Database": {
"DB 1": {
"Server": "Foo",
"Application Name": "App1"
},
"DB 2": {
"Server": "Boo",
"Application Name": "App2"
}
}
},
"Production": {
"Database": {
"DB 1": {
"Server": "FooFoo",
"Application Name": "App1"
},
"DB 2": {
"Server": "BarBar",
"Application Name": "App2"
}
}
}
基于环境(开发或生产(,我想得到什么
{
"Database": {
"DB 1": {
"Server": "Foo",
"Application Name": "App1"
},
"DB 2": {
"Server": "Boo",
"Application Name": "App2"
}
}
以下是我迄今为止所尝试的:
将JSON文件读取为字符串
反序列化为Newtonsoft JObject
按环境过滤
configData.Descendants .OfType(Of JProperty) .Where(Function(attr) attr.Name.ToUpper = "PRODUCTION" Or attr.Name.ToUpper = "DEVELOPMENT" And attr.Name.ToUpper <> environment.ToUpper) .ToList() .ForEach(Sub(attr) attr.Remove())
结果
{
"Development": {
"Database": {
"DB 1": {
"Server": "Foo",
"Application Name": "App1"
},
"DB 2": {
"Server": "Boo",
"Application Name": "App2"
}
}
}
从这里开始,我陷入了困境,似乎什么都做不了。我希望能够访问我的配置属性,而调用方不知道它在什么环境中。
类似的东西
configuration("Database")("DB 1")
与
configuration(environment)("Database")("DB 1")
如果我在这件事上采取了愚蠢的做法,我也会接受这个答案。我从来没有真正玩过VB或。以前的网络,所以对我来说都是全新的。我理解一些东西,但还远远没有真正理解任何强大的东西。
Dim environment = "Development"
Dim filteredJson = JObject.Parse(yourJson)(environment).ToString
会给你
{
"Database": {
"DB 1": {
"Server": "Foo",
"Application Name": "App1"
},
"DB 2": {
"Server": "Boo",
"Application Name": "App2"
}
}
}
替换";生产";对于";"发展";当然,在适当的时候。
请注意,json示例中缺少一个右大括号