【发布时间】:2016-07-12 06:36:16
【问题描述】:
我有一个 Json 类型:
{
"JobProcessors": [
{
"JobName": "ArchivalJob",
"IsEnabled": true,
"Batching": {
"BatchSize": 0,
"DegreeOfParallelism": -1
},
"Settings": {
"ArchivalJobCollectionPageSize": 50
}
},
{
"JobName": "AuditLogJob",
"IsEnabled": false,
"Batching": {
"BatchSize": 10,
"DegreeOfParallelism": -1
},
"Settings": {}
}
],
"ScheduledJobs": [
{
"JobName": "RemoteStartClientCommandJob",
"PrimaryAction": {
"ConnectionString": "#JobProcessorsIntegrationSBConnectionStringValue#",
"Settings": {
"LeadTimeInSeconds": "600",
"MaxSrsJobCount": 25
}
},
"ErrorAction": {
"ConnectionString": "#PairedJobProcessorIntegrationSBConnectionStringValue#",
"EntityPath": "remotestartqueue",
"Settings": {
"LeadTimeInSeconds": "600",
"MaxSrsJobCount": 25
}
}
}
]
}
我想检查“JobProcessors”类别下所有“JobName”的“IsEnabled”属性。 在 C# 中我到目前为止使用的是:
dynamic parsedJson = JsonConvert.DeserializeObject(reader.GetString(1));
foreach (var item in parsedJson)
{
foreach (var smallitem in item)
{
foreach (var tag in smallitem)
{
if(tag.IsEnabled.toString()=="true"){
Console.WriteLine("true");
}
}
}
}
这给了我正确的结果,除了它也为 "ScheduledJobs" 进行迭代。但主要问题是:
这是正确或最有效的方法吗?如果可能的话建议一些更好的方法。
我知道的一个是使用类,但我可能事先不知道 json 结构。而且 json 非常庞大,所以制作类可能很麻烦!!
【问题讨论】:
-
你为什么要解析成
dynamic?更好地创建一个强类型对象来表示您的结构 -
用 for 循环切换 foreach。 for 循环总是比 for each 循环快
-
@haim770 我可能事先不知道类的结构。
-
@Florian Neiss 实际上我不知道数组中元素的数量。
-
另一种解决方法是在 foreach (var smallitem in item) 下编写一个 if 来检查 smallitem 是否为“JobProcessors”