2017-07-24 7 views
1

Ich kann REST JSON in ein Array laden. Aber ich brauche die Daten als Wörterbuch zu laden, um sowohl Zugriff auf name und type so können sie in der treeView1Problem beim Erstellen eines Wörterbuchs aus JSON

zeigt das json sieht aus wie

{"currentVersion" : 10.05, 
    "folders" : [], 
    "services" : [ 
    {"name" : "appData/Drainage", "type" : "MapServer"}, 
    {"name" : "appData/Parks", "type" : "MapServer"}, 
    {"name" : "appData/Planning", "type" : "MapServer"}, 
    {"name" : "appData/QNet", "type" : "MapServer"}, 
    {"name" : "appData/Sanitary", "type" : "MapServer"}, 
    {"name" : "appData/Street_Lights", "type" : "MapServer"}, 
    {"name" : "appData/Survey", "type" : "MapServer"}, 
    {"name" : "appData/Transportation", "type" : "MapServer"}, 
    {"name" : "appData/Water", "type" : "MapServer"} 
    ] 
} 

diesen Code verwenden, kann ich nur zum Anzeigen name auf treevView

var client = new HttpClient(); 
var response = await client.GetAsync(url); 
var json = await response.Content.ReadAsStringAsync(); 
var model = JsonConvert.DeserializeObject<ServiceResponse>(json); 
var servicesList = model.services.Select(s => s.name.Replace("app/", "")).ToArray(); 
foreach (string value in servicesList) 
{ 
    treeView1.Nodes.Add(value); 
} 

wie:

enter image description here

aber ich brauche etwas zu haben, wie

enter image description here

I alreadytried Wörterbuch hinzufügen, ähnliche

Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(json); 

bot sich nicht sicher, wie die Daten von dort abzurufen und zu treeView1 bewerben?

+0

Haben Sie stattdessen eine Zuordnung zu einer Datenstruktur in Erwägung gezogen? –

+0

Danke für die Antwort Daniel, aber kann dich bitte lassen Sie mich wissen, was meinst du? –

Antwort

1

Wenn Sie versuchen, eine solche Art resultieren aus JSON abzurufen, die Sie Ihnen zur Verfügung gestellten so etwas wie dieses

Nicht sicher versuchen können, was ServiceResponse ist, also habe ich es erstellt, nur für Demo

string json = @"{'currentVersion' : 10.05, 
    'folders' : [], 
    'services' : [ 
     {'name' : 'appData/Drainage', 'type' : 'MapServer'}, 
     {'name' : 'appData/Parks', 'type' : 'MapServer'}, 
     {'name' : 'appData/Planning', 'type' : 'MapServer'}, 
     {'name' : 'appData/QNet', 'type' : 'MapServer'}, 
     {'name' : 'appData/Sanitary', 'type' : 'MapServer'}, 
     {'name' : 'appData/Street_Lights', 'type' : 'MapServer'}, 
     {'name' : 'appData/Survey', 'type' : 'MapServer'}, 
     {'name' : 'appData/Transportation', 'type' : 'MapServer'}, 
     {'name' : 'appData/Water', 'type' : 'MapServer'} 
    ] 
}"; 

var model = JsonConvert.DeserializeObject<ServiceResponse>(json); 

var services = model.Services.Select(t => new Service 
{ 
    Name = t.Name.Replace("appData/", ""), 
    Type = t.Type 
}).OrderBy(t => t.Name).ToList(); 

foreach (var service in services) 
{ 
    string value = $"{service.Name} - ({service.Type})"; 

    //treeView1.Nodes.Add(value); 

    Console.WriteLine(value); 
} 


public class ServiceResponse 
{ 
    public string CurrentVersion { get; set; } 
    public List<string> Folders { get; set; } 
    public List<Service> Services { get; set; } 
} 

public class Service 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 
} 

Hinweis über Enumerable.Select es projiziert jedes Element einer Sequenz in eine neue Form. In Ihrem Fall ist servicesList nur Array of Strings, die Sie von diesem Ausdruck zurückgegeben haben.

Verwandte Themen