C# Interop 将 JSON 值添加到工作表

C# Interop add JSON values to worksheet

如何从一个 JSON 对象中获取所有值,然后立即将它们显示到工作表中?

这是我的 JSON 对象的样子:

{"report_suites": [
  {
    "rsid": "op-api-docs",
    "site_title": "API Docs Portal"
  },
  {
    "rsid": "op-bigideas",
    "site_title": "Big Ideas"
  },
  {
    "rsid": "op-education",
    "site_title": "Education"
  },
  {
    "rsid": "op-education-dev",
    "site_title": "Education - Dev"
  },
  {
    "rsid": "op-global",
    "site_title": "Global"
  },
  {
    "rsid": "op-global-dev",
    "site_title": "Global - Dev"
  }
]}

预期结果:

这就是我尝试完成此操作的方式,但是 returns 出现以下错误:

The best overloaded method match for 'System.Collections.Generic.List.AddRange(System.Collections.Generic.IEnumerable)' has some invalid arguments

dynamic response = JsonConvert.DeserializeObject(responseXml);
var just_rs = response.report_suites;
var report_title = new List<string>();
var report_id = new List<int>();
foreach(var item in just_rs) {
    report_title.AddRange(item.site_title);
    report_id.AddRange(item.rsid);
}
rng = (Excel.Range)ws.Range[ws.Cells[2, 1], ws.Cells[report_id.Length, 1]];
rng.Value = report_id;
rng = (Excel.Range)ws.Range[ws.Cells[2, 2], ws.Cells[report_title.Length, 2]];
rng.Value = report_title;

其中response是我上面提到的JSON对象。

如果我使用 Add 而不是 AddRange,我会收到以下错误:

The best overloaded method match for 'System.Collections.Generic.List.Add(string)' has some invalid arguments

item.site_title 不是字符串,但您正试图将其添加到 string

的集合中

如果我没记错 JsonConvert to a dynamic 结果是 JArray/JObject/JToken,那么您可能想看看确定 item.site_title 是什么类型,并查看其适当的方法来提取string.

的值

至于使用AddRange()方法,你确定这是你想用的吗?您在尝试添加单个元素范围的循环内。我认为您希望改用 Add()。确定类型并转换为字符串后,使用 Add() 方法。