如何将非常长的字符串数组从 C# 传输到 Javascript/JQuery?

How to transfer very long string array from C# to Javascript/JQuery?

我目前正在开发一个新的 "dashboard like" 网站,我需要在该网站上显示来自 exchange 2016 邮箱(例如 gmail 或任何 bootstrap 电子邮件客户端模板)的所有邮件。

目前,我可以通过使用 EWS API.

毫无问题地从邮箱中检索邮件

我的问题是我真的不知道哪种格式(XML 或 JSON)比 return 消息内容(ID、正文、主题和 DateTimeReceived)更好。我尝试将所有消息存储在多维数组和锯齿状数组中,但是当我尝试将它们序列化为 JSON 字符串时,我总是会收到 "Unexpected token" 错误。

所以我的两个问题是:

1) 考虑到邮件正文可以是很长的字符串,使用 XML 格式是否比 JSON 更好?

2) 除了通过 JQuery 脚本转换数组之外,有没有更好的方法来实现我要做的事情?

PS:我正在研究 Visual Studio 2017,使用的语言是 C# 和 bootstrap 仪表板模板。另外,我对网络开发(语言、良好的编码习惯等)完全陌生,但对 C# 编程不是。

这是我从邮箱和 return 多维数组中提取所有消息的函数:

public string[,] getEmail() {
 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);

 service.AutodiscoverUrl("testUser@myworkplace.com");
 service.TraceEnabled = true;
 service.TraceFlags = TraceFlags.All;
 service.UseDefaultCredentials = true;
 PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
 itempropertyset.RequestedBodyType = BodyType.Text;
 ItemView itemview = new ItemView(1000);
 itemview.PropertySet = itempropertyset;
 FindItemsResults < Item > findResults = service.FindItems(WellKnownFolderName.Inbox, itemview);

 string[, ] emailArray = new string[findResults.TotalCount, 4];
 int i = 0;

 foreach(Item item in findResults.Items) {
  message.Load(itempropertyset);

  emailArray[i, 0] = message.Id.ToString();
  emailArray[i, 1] = message.Subject;
  emailArray[i, 2] = message.Body;
  emailArray[i, 3] = message.DateTimeReceived.ToString();

  i++;
 }

 return emailArray;

}

如有任何帮助,我们将不胜感激。

如果您尝试将数据传输到网络浏览器,您最好使用 JSON。浏览器具有解析 JSON 字符串的本机代码,这是一种非常容易创建和解析的格式。

话虽如此,您还是应该找一个库来为您进行编码。几乎所有平台都会有一些代码将一组嵌套的映射和数组转换为 JSON 字符串,这将帮助您避免在实际格式化和解析文档时出现小(但致命)错误。

另请参阅:JSON.stringify and JSON.parse