Класс десериализации JSON с различными именами членов
У меня есть несколько json для живых автобусных остановок прибытия и отправления.
{ "atcocode": "269030083", "smscode": "lecdgpja", "request_time": "2019-05-25T13:45:14+01:00", "name": "St Margaret's Bus Station (Stand SM)", "stop_name": "St Margaret's Bus Station", "bearing": "", "indicator": "Stand SM", "locality": "Leicester", "location": { "type": "Point", "coordinates": [ -1.1339, 52.6397 ] }, "departures": { "153": [ { "mode": "bus", "line": "153", "line_name": "153", "direction": "Market Bosworth, Terminus (unmarked)", "operator": "AMID", "date": "2019-05-25", "expected_departure_date": null, "aimed_departure_time": "13:45", "expected_departure_time": null, "best_departure_estimate": "13:45", "source": "NextBuses", "dir": "outbound", "id": "https://transportapi.com/v3/uk/bus/route/AMID/153/outbound/269030083/2019-05-25/13:45/timetable.json?app_id=ID&app_key=KEY", "operator_name": "Arriva Midlands" }, { "mode": "bus", "line": "153", "line_name": "153", "direction": "Market Bosworth, Terminus (unmarked)", "operator": "AMID", "date": "2019-05-25", "expected_departure_date": null, "aimed_departure_time": "14:45", "expected_departure_time": null, "best_departure_estimate": "14:45", "source": "NextBuses", "dir": "outbound", "id": "https://transportapi.com/v3/uk/bus/route/AMID/153/outbound/269030083/2019-05-25/14:45/timetable.json?app_id=ID&app_key=KEY", "operator_name": "Arriva Midlands" }, { "mode": "bus", "line": "153", "line_name": "153", "direction": "Market Bosworth, Terminus (unmarked)", "operator": "AMID", "date": "2019-05-25", "expected_departure_date": null, "aimed_departure_time": "15:45", "expected_departure_time": null, "best_departure_estimate": "15:45", "source": "NextBuses", "dir": "outbound", "id": "https://transportapi.com/v3/uk/bus/route/AMID/153/outbound/269030083/2019-05-25/15:45/timetable.json?app_id=ID&app_key=KEY", "operator_name": "Arriva Midlands" } ] }, "source": "NextBuses" }
В этом примере вылет имеет член "153", но очевидно, что по мере изменения названий автобусов имя члена изменится, например, на "N1" и т. д.
Что я уже пробовал:
Я пробовал сделать depatures словарем, но когда я foreach через словарь, я просто получаю нулевые значения....
public class Departures { public Dictionary<string, listing_details> listing { get; set; } } public class listing_details { public string mode { get; set; } public string line { get; set; } public string line_name { get; set; } public string direction { get; set; } public string @operator { get; set; } public string date { get; set; } public string expected_departure_date { get; set; } public string aimed_departure_time { get; set; } public string expected_departure_time { get; set; } public string best_departure_estimate { get; set; } public string source { get; set; } public string dir { get; set; } public string id { get; set; } public string operator_name { get; set; } }
Может ли кто-нибудь подсказать, как я буду перебирать разные списки именных автобусов, пожалуйста? В этом примере это будет departures.153, но для автобуса N1, но это может быть departures.N1 . к сожалению, я не буду знать названия автобусов, пока не получу JSON, поэтому я компетентно озадачен. Любая помощь будет оценена по достоинству! Спасибо.
F-ES Sitecore
Невозможно дать конкретную помощь, если мы не знаем, что вы используете для десериализации json. Я считаю Json.NET newtonsoft может справиться с динамическими формате JSON.
jerry0davis
Как вы и предсказывали - NewtonsoftJSON
BusTimeTable resultsBTT = JsonConvert.DeserializeObject<BusTimeTable>(responseString);
Как я itterate через динамический JSON с использованием NewtonsoftJSON?
Спасибо