如何从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"
}
]}
这是我尝试完成此操作的方法,但它返回以下错误:
最佳重载方法匹配' System.Collections.Generic.List.AddRange(System.Collections.Generic.IEnumerable)'有一些无效的论点
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
,我会收到以下错误:
最佳重载方法匹配&#39; System.Collections.Generic.List.Add(string)&#39;有一些无效的论点
答案 0 :(得分:1)
item.site_title
不是字符串,但您尝试将其添加到string
如果我没记错JsonConvert到dynamic
导致JArray / JObject / JToken,那么你可能想看看确定item.site_title
是什么类型,并查看其适当的方法来提取值string
。
至于使用AddRange()
方法,您确定这是您想要使用的吗?您在循环内部尝试添加单个元素的范围。我认为您希望使用Add()
代替。确定类型并转换为字符串后,使用Add()
方法。