ich einen Json vom Typ habe:Parsen komplexe JSON: mehr Schleifen vs. Klassen
{
"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
}
}
}
]
}
Ich mag das „IsEnabled“ Eigentum für alle „Jobnamen“, für die, die unter "überprüfen JobProcessoren "Kategorie. In C#, was ich bis jetzt verwendet habe, ist:
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");
}
}
}
}
Das ist mir, außer der Tatsache richtiges Ergebnis zu geben, dass es auch iteriert für „ScheduledJobs“. Aber das Hauptproblem ist:
Ist dies der richtige oder effizienteste Weg, dies zu tun? Wenn möglich, schlagen Sie eine bessere Methode vor.
Eine, die ich kenne, verwendet Klassen, aber ich kann nicht die JSON-Struktur im Voraus kennen. Auch der JSON ist sehr groß, so dass der Unterricht schwerfällig sein kann !!
Warum Sie in 'dynamic' parsen? Erstellen Sie besser ein stark typisiertes Objekt, um Ihre Struktur zu repräsentieren – haim770
Schalten Sie die foreach mit einer for-Schleife. Die for-Schleife ist immer schneller als eine für jede Schleife –
@ haim770 Ich kann die Struktur der Klasse vorher nicht kennen. – Arushi