2015-07-28 4 views
0

У меня есть строка json раньше, когда работала нормально. Теперь он не разбирается, когда я добавил вложенные элементы. Я хочу проанализировать json-массив в C#. Вот мой код json.JsonConvert не удалось разобрать

{ 
    "Type": "Hotel",  
    "myArray": [{ 
     "id": 0, 
     "time": ["1", "2"], 
     "index": 0, 
     "picked": [{ 
      "id": 1, 
      "oc": "1" 
     }, { 
      "id": 2, 
      "oc": "1" 
     }] 
    }, { 
     "id": 1, 
     "time": [], 
     "index": 1, 
     "picked": [] 
    }, { 
     "id": 2, 
     "time": [], 
     "index": 2, 
     "picked": [] 
    }, { 
     "id": 3, 
     "time": [], 
     "index": 3, 
     "picked": [] 
    }, { 
     "id": 4, 
     "time": [], 
     "index": 4, 
     "picked": [] 
    }, { 
     "id": 5, 
     "time": [], 
     "index": 5, 
     "picked": [] 
    }, { 
     "id": 6, 
     "time": ["3"], 
     "index": 6, 
     "picked": [{ 
      "id": 3, 
      "oc": "1" 
     }] 
    }] 
} 

Я хочу, как это

JsonConvert.DeserializeObject<MyObject>(abovejsonstring) 

Кто-нибудь помочь мне.

Текущая структура Класс

public class MyObject 
    { 
     public string Type { get; set; } 
     public List<MyArray> myArray { get; set; } 
    } 

    public class MyArray 
    { 
     public string id { get; set; } 
     public string[] time { get; set; } 
     public string index { get; set; } 
     public List<Picked> picked { get; set; } 
    } 
    public class Picked 
    { 
     public string id { get; set; } 
     public string oc { get; set; } 
    } 

Ошибка была:

Не можете десериализации текущий объект JSON (например, { "имя": "значение"}) в тип «System.String [] ', потому что для правильного десериализации для типа требуется массив JSON (например, [1,2,3]). Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивным типом типа integer, а не типом коллекции, например массив или список), которые можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализовать объект JSON.

+1

Какая ошибка? –

+0

Можете ли вы показать нам, что такое ошибка? – Ajit

+0

обновлено мое сообщение –

ответ

0

Я попытался с

http://json2csharp.com/

http://jsonclassgenerator.codeplex.com/

Superb. за работой.

public class WeekArray2 
    { 

     [JsonProperty("id")] 
     public int id { get; set; } 

     [JsonProperty("time")] 
     public string[] time { get; set; } 

     [JsonProperty("index")] 
     public int index { get; set; } 

     [JsonProperty("picked")] 
     public Picked2[] picked { get; set; } 
    } 


    public class MS 
    { 

     [JsonProperty("year")] 
     public string year { get; set; } 

     [JsonProperty("month")] 
     public string month { get; set; } 

     [JsonProperty("currentmonth")] 
     public string currentmonth { get; set; } 

     [JsonProperty("community")] 
     public string community { get; set; } 

     [JsonProperty("WeekArray")] 
     public WeekArray2[] weekarray { get; set; } 
    } 
0

Я думаю, что проблема в том, что это структура ньютон видит из JSON:

public class MyArray 
{ 
    public int id { get; set; } 
    public List<object> time { get; set; } 
    public int index { get; set; } 
    public List<object> picked { get; set; } 
} 

Таким образом, вы должны изменить массив (строка [] время), чтобы время список

Edit: Просто увидел, что это не было времени массив, то это, вероятно, потому, что он не признает «подбираемый» объект

+0

Earler работал нормально, но я добавил еще один объект myArray, после чего он не удался. –

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