Как извлечь eventId из предоставленных данных json - PullRequest
0 голосов
/ 22 марта 2019

Помогите мне получить eventID из этих данных json: на интерфейсах было установлено свойство

{"events":[{"eventId":1579,"eventName":"NN - Marathon Rotterdam","startDateTime":"2018-04-06 09:00:00","endDateTime":"2018-04-08 16:30:00"}],"autostartEvent":null}

public interface IEventList : IList<IEvent>
{

    DateTime StartDate { get; }

    DateTime EndDate { get; }

    IEvent AutoStartEvent { get; }
}


public interface IEvent
{
    int Id { get; }

    string Name { get; }

    DateTime StartDate { get; }

    DateTime EndDate { get; }

}

этот интерфейс был инициализирован в списке событийкласс, в котором десериализованный объект был сопоставлен со свойством events.

 public class EventList : IEventList
{
    public object  Events { get; set; }

}

 try
        {
             var deserializeData = JsonConvert.DeserializeObject(json);
            return new EventList
                  {
                     Events=deserializeData 
                  };
        }

, поэтому я хочу получить Eventid из объекта events.

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Один из подходов состоит в том, что

непосредственно анализирует ваш JSON с JObject, предоставленным newtonsoft, а затем извлекает ваш eventId с помощью Запрашивая ваш JSON,

Таким образом, вам больше не нужно управлять иерархией классов,

string json = "Your json here";

JObject jObject = JObject.Parse(json);

int eventId = (int)jObject["events"][0]["eventId"];

Вывод: (из отладчика)

enter image description here

Примечание: Вам необходимо установить NewtonSoft NuGet пакет и импортировать using Newtonsoft.Json.Linq; пространство имен в вашу программу.

2 голосов
/ 22 марта 2019

Создать связанные классы внизу;

public class Event
{
    public int eventId { get; set; }
    public string eventName { get; set; }
    public string startDateTime { get; set; }
    public string endDateTime { get; set; }
}

public class RootObject
{
    public List<Event> events { get; set; }
    public object autostartEvent { get; set; }
}

И десериализовать JSON вот так;

RootObject root = new System.Web.Script.Serialization.JavaScriptSerializer()
                      .Deserialize<RootObject>(jsonText);

int exampleEventId = root.events.FirstOrDefault().eventId;//Example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...