无法在json响应对象上执行循环

时间:2014-07-28 06:31:37

标签: c# javascript json

我有类别词典&他们在.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文件中我得到了以下回复

enter image description here

正如我们所看到的结果不是数组的形式,我无法索引tpoints,因为它不是数组。我该怎么办?我想索引类别以及与每个类别相关的类型..

2 个答案:

答案 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

中的所有食物