【发布时间】:2015-05-11 01:06:34
【问题描述】:
我正在尝试使用 jQuery 递归遍历 JSON 对象。通常它可以工作,但不能在以下 JSON 上。
我要遍历这个JSON,这里我上传了一张图片:
对于我的 json 对象,我有这个 jquery 函数:
var construct_id = "#ecommerce_form_";
// function to traverse json objects given back from Serializer class
function process(callback, id) {
var key;
for (key in callback) {
// Handle the arrays
if ('length' in callback[key]) {
// Handle the end - we found a string
if (typeof callback[key][0] == "string") {
var field_id = construct_id + id + key;
var err_msg = callback[key][0];
$(field_id).tooltip('destroy');
$(field_id).tooltip({'title': err_msg});
$(field_id).closest('div[class="form-group"]').addClass('has-error');
console.log(field_id, ":", err_msg);
}
// Else we found something else, so recurse.
else {
var i = 0;
while (i < callback[key].length) {
process(callback[key][i], key + "_" + i + "_");
i++;
}
}
}
// Handle the objects by recursing.
else {
process(callback[key], key + "_");
}
}
}
但在尝试构建联系人时该功能失败 > 地址 id 并显示错误消息:
"未捕获的 TypeError: 无法使用 'in' 运算符搜索 'length' in 这个值不能为空。”
希望你们能帮助我增强 jQuery 功能,正如您在这个 json 示例中看到的那样,它并不是 100% 成功的。
问候
【问题讨论】:
-
不是发布图像,而是发布 JSON 的字符串表示
-
顺便说一句,这不是一个 jQuery 函数。它只是一个使用一些 jQuery 选择器的纯 JavaScript 编写的递归函数。
-
是的 Mouser,与我的问题无关 :x 。我知道区别,但是当我写成标题'javascript traverse json'时,有人会说'不,它不仅是一个javascript函数,它还使用jQuery'..认为这是次要优先级,Eyal的回答真的帮助了我。
标签: javascript jquery json recursion