我正在尝试以这种格式填充对象列表,以便它与所需 API 的 JSON.NEt 输出相匹配。但是我在整个块上得到一个以 .添加()...我错过了什么吗?
foreach(var item in emailsToUpload.payload)
{
hubPayload.Add(new HubEmailItem()
{
email = item.Email, properties =
{ new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") },
new HubEmailTuple() { property = "other property", value = "other value" }
}
});
}
更新:
public class HubEmailItem
{
public String email { get; set; }
public List<HubEmailTuple> properties { get; set; }
}
不能将此语法用于此类泛型列表。
properties =
{ new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") },
new HubEmailTuple() { property = "other property", value = "other value" }
}
您应该添加一个new List<HubSpotEmailTuple>
properties = new List<HubSpotEmailTuple>
{ new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") },
new HubEmailTuple() { property = "other property", value = "other value" }
}
注意:这是有效的:
int[] a = {0, 2, 4, 6, 8};
但这不是:
// wrong
List<int> a = {0, 2, 4, 6, 8};
// correct
List<int> a = new List<int> {0, 2, 4, 6, 8};
查看文档:http://msdn.microsoft.com/en-us/library/aa664573(v=vs.71).aspx
在初始化 List 时,唯一可能引发此异常的是您要迭代的项目之一。您正在使用 Email 属性,似乎其中一个项目为 null 并导致异常。
email = item.Email //causes NullReferenceException when item is null
您可以通过在 foreach 循环的第一个大括号处设置条件断点来检查这是否确实为真,当item == null
为 true 时将触发该断点。