2013-08-07 4 views
0

Я пытаюсь извлечь некоторые данные из json. Я искал решение в JSS или Json.net, но не смог понять эту проблему. вот как выглядит мой Json: Примечание: i Протестировано и работает картирование и децентрализация! Я ищу способ извлечь специфические данные из json!извлечение данных из json в asp.net C#

Спасибо заранее!

{ 
"tasks":[ 
    { 
    "id":"tmp_fk1345624806538", 
    "name":"Gantt editor ", 
    "code":"", 
    "level":0, 
    "status":"STATUS_ACTIVE", 
    "start":1346623200000, 
    "duration":5, 
    "end":1347055199999, 
    "startIsMilestone":false, 
    "endIsMilestone":false, 
    "assigs":[ 
     { 
     "resourceId":"tmp_3", 
     "id":"tmp_1345625008213", 
     "roleId":"tmp_1", 
     "effort":7200000 
     } 
    ], 
    "depends":"", 
    "description":"", 
    "progress":0 
    }, 
    { 
    "id":"tmp_fk1345624806539", 
    "name":"phase 1", 
    "code":"", 
    "level":1, 
    "status":"STATUS_ACTIVE", 
    "start":1346623200000, 
    "duration":2, 
    "end":1346795999999, 
    "startIsMilestone":false, 
    "endIsMilestone":false, 
    "assigs":[ 
     { 
     "resourceId":"tmp_1", 
     "id":"tmp_1345624980735", 
     "roleId":"tmp_1", 
     "effort":36000000 
     } 
    ], 
    "depends":"", 
    "description":"", 
    "progress":0 
    }, 
    { 
    "id":"tmp_fk1345624789530", 
    "name":"phase 2", 
    "code":"", 
    "level":1, 
    "status":"STATUS_SUSPENDED", 
    "start":1346796000000, 
    "duration":3, 
    "end":1347055199999, 
    "startIsMilestone":false, 
    "endIsMilestone":false, 
    "assigs":[ 
     { 
     "resourceId":"tmp_2", 
     "id":"tmp_1345624993405", 
     "roleId":"tmp_2", 
     "effort":36000000 
     } 
    ], 
    "depends":"2", 
    "description":"", 
    "progress":0 
    } 
], 
"resources":[ 
    { 
    "id":"tmp_1", 
    "name":"Resource 1" 
    }, 
    { 
    "id":"tmp_2", 
    "name":"Resource 2" 
    }, 
    { 
    "id":"tmp_3", 
    "name":"Resource 3" 
    } 
],"roles":[ 
{ 
    "id":"tmp_1", 
    "name":"Project Manager" 
}, 
{ 
    "id":"tmp_2", 
    "name":"Worker" 
} 
], 
"canWrite":true, 
"canWriteOnParent":true, 
"selectedRow":0, 
"deletedTaskIds":[], 
} 

я уже отображается, как следовать

public class Rootobject 
{ 
    public Task[] tasks { get; set; } 
    public Resource[] resources { get; set; } 
    public Role[] roles { get; set; } 
    public bool canWrite { get; set; } 
    public bool canWriteOnParent { get; set; } 
    public int selectedRow { get; set; } 
    public object[] deletedTaskIds { get; set; } 
} 

public class Task 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
    public string code { get; set; } 
    public int level { get; set; } 
    public string status { get; set; } 
    public long start { get; set; } 
    public int duration { get; set; } 
    public long end { get; set; } 
    public bool startIsMilestone { get; set; } 
    public bool endIsMilestone { get; set; } 
    public Assig[] assigs { get; set; } 
    public string depends { get; set; } 
    public string description { get; set; } 
    public int progress { get; set; } 
} 

public class Assig 
{ 
    public string resourceId { get; set; } 
    public string id { get; set; } 
    public string roleId { get; set; } 
    public int effort { get; set; } 
} 

public class Resource 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

public class Role 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

и мне нужно, чтобы извлечь следующую информацию из моего JSON (от конкретной задачи в мае JSON, например, первый с идентификатором: tmp_fk1345624806538). , Примечание: я получаю мой JSON из файла JSON следующим образом:

string startDate; // this is what i need to extract 
string endDate; // this is what i need to extract 
string Progress; // this is what i need to extract 

public void load() 
{ 
    GC.GClass l = new GC.GClass(); 
    string jsonString = l.load(); // i get my json from a json file 

    Rootobject project = JsonConvert.DeserializeObject<Rootobject>(jsonString); 

} 

ответ

2

Вы можете использовать LINQ для запроса объект быстро.

Task task = project.tasks.FirstOrDefault(t=> t.id == "tmp_fk1345624806538"); 

Тестовая задача, и если null, то не было задачи с совпадающим идентификатором. Если вы уверены, что будет соответствующая задача, вы можете просто использовать .First(), но она будет генерировать исключение, если в списке нет соответствия

Вам нужно будет добавить использование System.Linq; если у вас этого нет.