2014-01-24 151 views
0

我需要關於遍歷以下JSON中每個元素的幫助,並獲取key和value並將其打印爲無序列表。JavaScript對象遍歷

var dataSource = ({ 
       "Items": ({ 
        "Deserts": ({}), 
        "Veg": ({ 
         "VegPulao": "Veg Pulao", 
         "PalakPaneer": "Palak Paneer", 
         "PaneerButterMasala": "Paneer Butter Masala" 
        }), 

        "Chicken": ({ 
         "Tandoori": "Tandoori special" 
        }), 
        "Hot drinks": ({ 
         "Coffe": ({ "Hot": "Hot Coffe", "Medium": "Medium", "Others": ({ "Iris": "Iris Coffe", "Capuccino": "Capuccino" }) }), 
         "Tea": ({"Red": "Red Tea", "Black": "Black Tea"}), 
         "BadamMilk": "Hot Badam Milk", 
         "Bornvita": "Hot Bornvita", 
         "Milk": "Hot Milk" 
        }), 
        "Juice": ({ 
         "Mango": "Mango", 
         "Berry": "Berry", 
         "Grapes": "Grapes", 
         "Wine": ({ 
          "Rose": "Rose", 
          "Red wine": "Red", 
          "Apple": "Apple", 
          "Hard drinks": ({ 
           "Royal challenge": "Royal challenge", 
           "Blender's Pride": "Blender's Pride" 
          }) 
         }) 
        }) 

       }) 
      }); 
+0

你所嘗試實現的目標?請粘貼您的代碼 – Jalpesh

+0

和[我如何列舉一個JavaScript對象的屬性?](http://stackoverflow.com/q/85992/218196) –

+0

我想打印每個值和關鍵在這個JSON裏面一個div元素。所以試圖弄明白.Sir需要一些幫助 – aliparevez20

回答

1

你不清楚究竟是哪種形式的輸出,但是這裏有一種遍歷你的數據結構併產生一些縮進輸出的方法。另外,數據定義中不需要括號(我已經將它們刪除以使數據更容易閱讀)。

function output(str, level) { 
    var obj = document.getElementById("output"); 
    var div = document.createElement("div"); 
    var node = document.createTextNode(str); 
    div.style.marginLeft = (level * 20) + "px"; 
    div.appendChild(node); 
    obj.appendChild(div); 
} 

function traverseObject(obj, level) { 
    for (var prop in obj) { 
     if (typeof obj[prop] === "object") { 
      output(prop, level); 
      traverseObject(obj[prop], level + 1); 
     } else { 
      output(prop + ": " + obj[prop], level); 
     } 
    } 
} 

traverseObject(dataSource, 0); 

工作演示:http://jsfiddle.net/jfriend00/6kAn3/

+1

謝謝verymuch先生,這是一個有用的代碼..我可以得到你的電子郵件地址,我想成爲你的朋友 – aliparevez20

+0

這是完美的代碼,感謝jfriend00。案例已關閉 – aliparevez20

+1

@ user3067443 - 由於您看起來可能是StackOverflow的新手,您是否知道在StackOverflow中如果您的答案很好,您應該點擊左側的複選標記選擇「最佳答案」的答案?這告訴社區你的問題已經得到回答,獎勵那位提供答案的人,併爲你遵循正確的程序贏得一些聲望點。 – jfriend00