我使用的是newtonsoft json通过测试读取一个文件,并将其放入一个动态对象中。这适用于静态配置部分然而,测试部分由测试组成,谁的语法不那么静态。有些项目可能有所不同。
所以我的json文件test.json看起来很像:(缩写(
{"config":{"user":"Nico",userID:"54"},
"tests":[ {"ask":"test1","handshake":false},
{"ask":"test2","handshake":false},
{"ask":"test3","handshake":true,"verify":"true"}
{"ask":"test4","handshake":false},
{"send":"result4"}
{"ask":"test7","repeat":30,"delay":120,"brakefail":false} ]
}
我将其转换为一个动态对象,读取配置部分效果很好:
dynamic testfile = JObject.Parse(File.ReadAllText( "c:\test.json"));
Console.WriteLine (testfile.config.user);
Console.Writeline (testfile.config.userID); //this works
但现在我想知道迭代测试的语法是什么
由于它们在选项上可能略有不同,因此如何解析它们。(测试频繁变化(。
测试是一个JArray。您可以使用简单的foreach 来迭代测试
foreach(JObject test in testfile.tests)
{
if(test.ContainsKey("ask"))
Console.WriteLine(test.GetValue("ask"));
}
但是你需要验证是否存在一个类似于"0"的变量;询问";
JObject.Parse()
返回一个JObject类型,该类型可以使用任何有效的字符串键(如您的案例中的"tests"(进行索引。然后,您可以使用类型为JToken的返回值来枚举项。
这里有一个例子:
var jObject = JObject.Parse("{"tests":[{"name":"Hana"},{"name":"Nita"}]}");
foreach (var item in jObject["tests"])
Console.WriteLine(item["name"]);