2016-04-28 3 views
0

Я новичок в JSON, и я учусь, извините, если я не знаю. У меня есть следующие JSON:Как получить свойства объектов JSON, когда они находятся внутри массива?

"data": [ 
{ 
    "id": 373644788, 
    "description": "something ", 
    "start": "2016-04-28T02:23:01+02:00", 
    "end": "2016-04-28T02:23:12+02:00", 
    "updated": "2016-04-28T02:24:05+02:00", 
    "dur": 11000, 
    "user": "John Smith", 
    "project": "First Project", 

}, 
{ 
    "id": 373635064, 
    "description": "None", 
    "start": "2016-04-28T01:43:42+02:00", 
    "end": "2016-04-28T01:44:06+02:00", 
    "updated": "2016-04-28T01:44:21+02:00", 
    "dur": 24000, 
    "user": "Drake", 
    "project": "Second Project", 

}] 

Каждый из этих JSON объектов, которые находятся внутри массива представляет собой отдельный проект, и мне нужно, чтобы извлечь данные (ID, Name, Start, End) от каждого из них и поместить их в мою C# Class и они должны сохраняются отдельно для каждого проекта, потому что они будут впоследствии экспортированы в базу данных, которая имеет те же столбцы, что и эти свойства. Я создал Class Definitions:

public class Definitions 
    { 
     public int id { get; } 
     public string user { get; } 
     public double dur { get; } 
     public string project { get; } 

     public override string ToString() 
     { 

       return string.Format("ID: {0}, Name: {1}, Duration: {2}, Projekt: {3}", this.id, this.user, this.dur, this.project); 


     } 

Проблема заключается в том, что я не могу получить доступ к свойствам внутри моей JSON .Если я стараюсь Deserialize это я всегда 0 в моем выходе на все мои свойства, как будто я могу Не обращайтесь к этим свойствам.

И второй вопрос: как я могу их хранить? Я имею в виду, когда они экспортируются в базу данных, каждый из них должен автоматически помещаться в отдельные строки, причем каждая строка имеет (ID,Nama,Start,End) столбцы. Спасибо.

Deserilize:

String jsonString = File.ReadAllText(@"D:\Json.json"); 
       Definitions def = JsonConvert.DeserializeObject<Definitions>(jsonString); 
       Console.WriteLine(def); 
+0

Можете ли вы показать нам свой код десериализации ??? –

+0

Это мой код десериализации. Я поместил свой JSON в локальный файл. И я получаю 4 свойства все с 0 значением – user3613744

ответ

3

Как ваш JSON имеет свойство data и это свойство является массив, который хранит множество объектов. Что вам нужно, это Deserialize из корня json, т. Е. Из свойства data.

Вы уже создали свой класс с теми же свойствами, что и в JSON, это правильно, теперь вы хотите написать еще один класс для свойства data.

public class DefinitionRoot 
{ 
    public List<Definitions> data {get; set;} 
} 

Теперь у нас есть класс со свойством называется data и хранит список наших Definitions.

Теперь мы можем Deserialize, как показано ниже.

var allDefinitions = JsonConvert.DeserializeObject<DefinitionsRoot>(yourJsonData);

После этого шага, ваш allDefinitons.data будет иметь список ваших деталей проекта.

Надеюсь, это полезно

+0

Я сделал это прямо сейчас, и я не получаю сообщение об ошибке, но я получаю только пустой экран – user3613744

+0

Или я получаю это: System.Collections.Generic.List'1 [test2.Program + Определения]. test2 - это мое пространство имен – user3613744

+0

Вы не можете записать его в консоли ... Поместите отладчик поверх них и посмотрите на значения, иначе вы также можете использовать окно просмотра ... Или же это сделать 'Console.WriteLine (def [0] .id); вы получите идентификатор первого объекта в массиве –

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