2012-07-26 72 views
0

我有下面的JSON,需要迭代通過「規則」對象。我似乎永遠無法正確地調用它來訪問不僅僅是最後一條規則。實施json迭代

如果有人能在正確的方向指向我,我會非常感激

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); 
    } 
    } 
} 
+2

在json對象中,是否真的可以有幾個具有相同名稱(「規則」)的屬性?改用數組。嗯...也許這是一個答案... – LosManos 2012-07-26 19:27:36

+1

你不應該使用'for..in'來迭代一個數組。 – ThiefMaster 2012-07-26 19:30:46

回答

1

這是因爲JSON奇怪地形成。它三次定義了包含對象的屬性「規則」,實質上是覆蓋本身。這可能更符合你的要求,而不是將所有這些單個項目數組嵌套在對象中。

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是該規則的索引值和屬性字段,條件等

+0

謝謝,這個伎倆 – LostBoy 2012-07-27 13:31:01

0

你只能有一個rule關鍵的原因,爲什麼你看到的最後一個規則不僅是因爲規則相互覆蓋和最後一個是剩下的,我建議使用一個數組來存儲規則。

1

你缺少花括號...

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