问题描述
我是强类型语言的新手,我正在开发一个 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 };
}
解决方法
最初,我们必须创建一个抽象会议时间的类:
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
。