2017-02-23 61 views
-1

У меня есть этот объект JSON, который я десериализовал с помощью C# в переменную, используя соответствующие классы.Как получить JSON Data C# из уложенных объектов

{"cmd": "test","cache": [{"cmd": "test","gw": [{"id": "123456"}],"data": "some_data"}]} 

Как я могу получить значение «ID», который находится внутри объекта «гравитационно», который находится внутри «кэш»?

Bellow - это мои классы для десериализации.

public class Gw 
{ 
    public string id { get; set; } 
} 

public class Cache 
{ 
    public string cmd { get; set; } 
    public List<Gw> gw { get; set; } 
    public string data { get; set; } 
} 

public class RootObject 
{ 
    public string cmd { get; set; } 
    public List<Cache> cache { get; set; } 
} 

EDIT

object model = JsonConvert.DeserializeObject<RootObject>(json); 

Если я пытаюсь:

string myID = model.cache[0].gw[0].id; 
string myID2 = model.cache.First().gw.First().id; 

Я получаю сообщение: 'объект' не содержит определение для 'кэша' и не метод расширения " cache ', принимающий первый аргумент типа' object ', можно найти (вам не хватает директивы использования или ссылки на сборку?)

ответ

0
RootObject model = JsonConvert.DeserializeObject<RootObject>(text); 
string myID = model.cache[0].gw[0].id; 
+0

Работал как очарование! – Rapsoulis

+0

Если у меня есть несколько массивов в кеше, как я могу их подсчитать? – Rapsoulis

+0

Вы можете использовать их так же, как и любой стандартный список, поэтому у вас есть доступ ко всем полям и методам - ​​например, полям _model.cache.Count_ или _model.cache.gw.Count_. Возможно, вы захотите сделать цикл в цикле - foreach (элемент var в файле model.cache) {foreach (var itemGW в item.gw) {Console.WriteLine (itemGW.id); }} –

Смежные вопросы