2015-07-28 2 views
0

У меня есть следующий Json: http://pastebin.com/pd62g62w Как я могу десериализовать "sensors" и превратить его в массив/список? Я использую Json.NET для десериализации.C# - Deserializing Json in Json

DeviceModel deviceModel = new DeviceModel(); 
deviceModel = JsonConvert.DeserializeObject<DeviceModel>(json); 

Мой текущий код:

using System; 
using Newtonsoft.Json; 

namespace Homecheck.Models { 
    public class DeviceModel { 
     public string error { get; set; } 

     public string errorType { get; set; } 

     [JsonProperty(PropertyName = "_id")] 
     public string id { get; set; } 

     [JsonProperty(PropertyName = "_user")] 
     public string user { get; set; } 

     [JsonProperty(PropertyName = "_serial")] 
     public string serial { get; set; } 
    } 
} 
+1

Ну, похоже, вам нужен класс 'Sensor', а затем' List 'в' DeviceModel'. (В стороне, я настоятельно рекомендую вам начать использовать обычные имена свойств .NET - 'Error',' ErrorType' и т. Д.) –

+0

@ Благодарю вас за предложение. Я не знал, что имена свойств C# начинаются с капиталов. – Denki

ответ

2

Создать класс для датчиков объектов

public class Sensor { 
    public bool Active { get; set; } 
    [JsonProperty(PropertyName = "_description")] 
    public bool Description { get; set; } 
    /* and so on */ 
} 

А потом добавить его к вашей модели, как IEnumerable<Sensor> собственности:

public class DeviceModel { 
    /* existing properties omitted */ 
    public IEnumerable<Sensor> Sensors { get; set; } 
} 

IEnumerable<Sensor> дает вам интерфейс для прохождения всех элементов. Вы также можете использовать IList<Sensor>, если хотите семантику списка (добавить, удалить, получить доступ по индексу) или использовать массив Sensor[], если вы просто хотите получить доступ по индексу.