实现json迭代

implementing json iteration

本文关键字:迭代 json 实现      更新时间:2024-04-10

我有下面的JSON,需要遍历"rule"对象。我似乎永远都不能正确地调用它,以便能够访问超过最后一条规则的内容。

如果有人能给我指明正确的方向,我会很感激

var rules = [{
"rule":[{
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","Y"],
    "actions":"required",
    "action_fields":["test1","test2"]
}],
"rule":[{
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","N"],
    "actions": "required",
    "action_fields": ["test3", "test4"]
}],
 "rule":[{
    "fields":["CASE.PROSECUTED_FLAG"],
    "conditions":["Y"],
    "actions": "required",
    "action_fields": ["test5"]
}]
}];


function rulesControl() {
    alert(rules.length);
    for (var rule in rules) {
    var xfields = rules[rule].rule.fields;
    var conditions = rules[rule].rule.conditions;
    var actions = rules[rule].rule.actions;
    var action_fields = rules[rule].rule.action_fields;
    //test the fields (if success, mark them, else clear them)
    if (validateRule(xfields, conditions)) {
        rulesAction(actions, action_fields);
    } else {
        ruleActionMakeClear(action_fields);
    }
    }
}

这是因为JSON的格式很奇怪。它对包含对象的属性"rule"定义了三次,本质上覆盖了它自己。这可能更符合您的要求,而不是将所有这些单项数组嵌套在对象中。

var rules = [
{"rule":
    {
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","Y"],
    "actions":"required",
    "action_fields":["test1","test2"]
    }
},
{"rule":
    {
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","N"],
    "actions": "required",
    "action_fields": ["test3", "test4"]
    }
},
{"rule":
    {
    "fields":["CASE.PROSECUTED_FLAG"],
    "conditions":["Y"],
    "actions": "required",
    "action_fields": ["test5"]
    }
}
];

您可以访问此:

rules[i].rule.PROPERTY

其中i是规则的索引值,PROPERTY是字段、条件等。

您缺少curlies。。。

var rules = [{"rule":[{}]
      },{  // You are missing this curly braces.
      "rule":[{}]},
      {"rule":[{}]}];

您只能有一个rule键。您之所以只看到最后一个规则,是因为规则会相互覆盖,而最后一个是剩余的,我建议使用数组来存储规则。