需要帮助在Javascript中遍历JSON对象

时间:2011-10-24 18:39:46

标签: javascript wcf json

我有调用WCF服务的代码并将JSON字符串返回给客户端。下面是我试图用来解析JSON的javascript函数,但无法弄清楚如何遍历它。

这是函数

loadDropDown: function(result, ddl, defaultItem) {
    var _data = result.get_object();
    //Sys.Serialization.JavaScriptSerializer.deserialize(result, true);

    this.clearDropDown(ddl);
    this.createOption(ddl, defaultItem, '');
    for (var i = 0; i < _data.length; i++) {
        var _item = _data[i];
        var _option = this.createOption(ddl, _item.Text, _item.Value);
    }
    ddl.disabled = false;
}

这是JSON

{
     "d": "[{\"Attributes\":{\"Keys\":[],\"Count\":0,\"CssStyle\":{\"Keys\":[],\"Count\":0,\"Value\":null}},\"Enabled\":true,\"Selected\":false,\"Text\":\"Lexus\",\"Value\":\"Lexus\"},{\"Attributes\":{\"Keys\":[],\"Count\":0,\"CssStyle\":{\"Keys\":[],\"Count\":0,\"Value\":null}},\"Enabled\":true,\"Selected\":false,\"Text\":\"Acura\",\"Value\":\"Acura\"}]"
}

有关为什么不起作用的任何建议?注意:我没有在解决方案中使用jquery。

3 个答案:

答案 0 :(得分:1)

你不应该生成那个json。相反,你应该输出

{
     "d": [{"Attributes":{"Keys":[],"Count":0,"CssStyle":{"Keys":[],"Count":0,"Value":null}},"Enabled":true,"Selected":false,"Text":"Lexus","Value":"Lexus"},{"Attributes":{"Keys":[],"Count":0,"CssStyle":{"Keys":[],"Count":0,"Value":null}},"Enabled":true,"Selected":false,"Text":"Acura","Value":"Acura"}]
}

(从"d"值中删除的引号)

在将json放入json对象之前,没有理由将json转换为字符串!把json直接放进去。

答案 1 :(得分:0)

在将其用作javascript数组之前,您需要执行eval(_data)。

代表:

var _rawdata = result.get_object();
var _data = eval(_rawdata);
//Sys.Serialization.JavaScriptSerializer.deserialize(result, true);

this.clearDropDown(ddl);
this.createOption(ddl, defaultItem, '');
for (var i = 0; i < _data.length; i++) {
    var _item = _data[i];
    var _option = this.createOption(ddl, _item.Text, _item.Value);
}
ddl.disabled = false;

答案 2 :(得分:0)

您应该只能eval()该对象(或使用JSON parsing from Crockford)并以常规对象表示法访问您的属性。不过,您可能需要先取消标识符。