我有类别词典&他们在.cs文件中的类型,如
Dictionary<string, List<string>> jsonDic
我已使用以下逻辑将其转换为json对象字符串:
JavaScriptSerializer jss = new JavaScriptSerializer();
string barJson = jss.Serialize(jsonDic);
string js = "TypesArray(" + barJson + ")";
ScriptManager.RegisterStartupScript(this, this.GetType(), "Startup1", js, true);
现在,在.js文件中我得到了以下回复
正如我们所看到的结果不是数组的形式,我无法索引tpoints,因为它不是数组。我该怎么办?我想索引类别以及与每个类别相关的类型..
答案 0 :(得分:1)
您可以按名称访问任何属性
tpoints["Foods"]
并返回一个字符串数组,在食物案例中
[Restaurant, Cafe, Bakery]
如果你想迭代,
for (var property in tpoints ) {
if (tpoints.hasOwnProperty(property)) {
// do stuff
}
}
答案 1 :(得分:0)
我认为您对正在使用的数据结构非常困惑。首先,你的问题标题是假的......
无法在json响应对象上执行循环
因为你确实循环了json对象。当你序列化下面的对象时......
Dictionary<string, List<string>> jsonDic;
序列化程序实际上是将字典中的每个KeyValuePair
对象映射到json数组项,即tPoint
。因此,要遍历此数组,您只需执行以下操作...
for (var tpoint in tpoints ) {
tpoint.Foods; //get food array
tpoint.Foods[0]; //get the first food item
}
等等,你甚至可以添加一个嵌套的for
循环来迭代每个内部数组,如下所示......
for (var tpoint in tpoints ) {
for(var i = 0; i < tpoint.Foods.length;i++){
console.log(tpoint.Foods[i]);
}
}
这会遍历每个tpoints