#c# #json #list #umbraco #strong-typing
Вопрос:
Я довольно новичок в строго типизированных языках и работаю над контроллером Umbraco, который выводит некоторый JSON со списком дат.
"meetingTimes": [10:30, 11:30]
Это работает довольно хорошо. Теперь я хочу вывести поле extry со временем, содержащим уникальный ключ
Так что это должно быть похоже
meetingTimes: [{ time: "10:30", key: "abcd-1234-efgh-5678" }, { time: "11:30", key: "defg-1234-sktg-5678" }]
Но я не могу понять, как это сделать.
Часть моего текущего кода, которая обрабатывает это:
try {
IPublishedContent content = Umbraco.Content(Guid.Parse("ff3e93f6-b34f-4664-a08b-d2eae2a0adbd"));
var meetingDatesAvailabled = content.Value<IEnumerable<IPublishedElement>>("meetingDatesAvailable");
var items = new List<object>();
foreach(var meetingDate in meetingDatesAvailabled)
{
if (meetingDate.Value("meetingItemDay").ToString().Substring(0, 8) == theDate) {
var times = meetingDate.Value<IEnumerable<IPublishedElement>>("meetingItemDayTimes");
foreach (var time in times)
{
items.Add(time.Value("meetingdateTimeItem").ToString());
}
}
}
return new { dateChosen = theDate, meetingTimes = items };
}
Ответ №1:
Изначально мы должны создать класс, который абстрагирует время встречи:
public class MeetingTime
{
public string Time { get; }
public Guid Key { get; }
public MeetingTime(string time, Guid key)
{
Time = time;
Key = key;
}
}
Затем мы создадим пустой список MeetingItem
, вместо того, чтобы создавать пустой список object
, var items = new List<object>();
.
var items = new List<MeetingItem>();
Тогда внутри тебя foreach
:
foreach (var time in times)
{
items.Add(new MeetingTime(time.Value("meetingdateTimeItem").ToString(),
Guid.NewGuid())
);
}
Примечание: Я не знаю, как вы сериализуете свои объекты (например, https://www.newtonsoft.com), но, вполне вероятно, вам придется украсить как свойства Time
, так и Key
атрибут для использования собственного имени во время сериализации. Если вы этого не сделаете, то он будет использовать имена по умолчанию, Time
и Key
. Я говорю это, потому что я заметил в json, которым вы поделились, что вы хотите быть time
и key
.
Комментарии:
1. Классно! Это именно то, что я искал! Спасибо!