2013-01-04 81 views
1

好的,我一直在通過這個網站尋找任何類似或啓發的東西,但我完全卡住了。我得到一些有效的JSON,需要通過解析來提取價格。我不是很遠。使用JavaScript瀏覽JSON

這裏的JSON:

{ 
    "result": "success", 
    "prices": { 
    "vdc": { 
     "monthly": "1.00" 
    }, 
    "network": { 
     "private": { 
     "monthly": "2.00" 
     }, 
     "public": { 
     "\/22 (1,111 IP Addresses)": { 
      "monthly": "3.00" 
     }, 
     "\/21 (2,222 IP Addresses)": { 
      "monthly": "4.00" 
     }, 
     "\/20 (3,333 IP Addresses)": { 
      "monthly": "5.00" 
     }, 
     "\/19 (5,555 IP Addresses)": { 
      "monthly": "6.00" 
     }, 
     "\/18 (6,666 IP Addresses)": { 
      "monthly": "7.00" 
     }, 
     "\/17 (7,777 IP Addresses)": { 
      "monthly": "8.00" 
     }, 
     "\/16 (8,888 IP Addresses)": { 
      "monthly": "9.00" 
     }, 
     "\/25 (111 IP Addresses)": { 
      "monthly": "10.00" 
     }, 
     "\/26 (55 IP Addresses)": { 
      "monthly": "11.00" 
     }, 
     "\/27 (22 IP Addresses)": { 
      "monthly": "12.00" 
     }, 
     "\/28 (11 IP Addresses)": { 
      "monthly": "13.00" 
     }, 
     "\/29 (5 IP Addresses)": { 
      "monthly": "14.00" 
     }, 
     "\/23 (900 IP Addresses)": { 
      "monthly": "15.00" 
     }, 
     "\/24 (333 IP Addresses)": { 
      "monthly": "16.00" 
     } 
     } 
    }, 
    "blocks": { 
     "22": { 
     "monthly": "17.00" 
     }, 
     "21": { 
     "monthly": "18.00" 
     }, 
     "20": { 
     "monthly": "19.00" 
     }, 
     "19": { 
     "monthly": "20.00" 
     }, 
     "18": { 
     "monthly": "21.00" 
     }, 
     "17": { 
     "monthly": "22.00" 
     }, 
     "16": { 
     "monthly": "23.00" 
     }, 
     "25": { 
     "monthly": "24.00" 
     }, 
     "26": { 
     "monthly": "25.00" 
     }, 
     "27": { 
     "monthly": "28.00" 
     }, 
     "28": { 
     "monthly": "29.00" 
     }, 
     "29": { 
     "monthly": "30.00" 
     }, 
     "23": { 
     "monthly": "24.00" 
     }, 
     "24": { 
     "monthly": "25.00" 
     } 
    }, 
    "server": { 
     "cpu": { 
     "monthly": "26.00" 
     }, 
     "ram": { 
     "monthly": "27.00" 
     } 
    }, 
    "volume": { 
     "gb": { 
     "monthly": "28.00" 
     } 
    }, 
    "snapshot": { 
     "gb": { 
     "monthly": "29.00" 
     } 
    } 
    } 
} 

測試,並在jsonlint [點] com驗證。

經過多次嘗試,測試,嘗試,撞擊我的鍵盤頭,嘗試......這是我目前有,但它不會產生預期的結果(我會告訴你這些是什麼,片段)。

function gp(x){ 
    for(var i in x){ 
     console.log('700: ', x[i]); 

     if(x[i] != 'success'){ 
      console.log(733); 
      console.log(x[i]); 

      for(var j in x[i]){ 
       console.log(736); 
       console.log(x[i][j]); 
      } 
     } 
    } 
} 

在控制檯中,我看到這樣的事情:

enter image description here

我真的想看到什麼(或發現或分析到),例如,每月價格爲「 gb「從」音量「元素(或者它是一個項目?)。

理想情況下,我想找到「音量」,「ram」和「cpu」 - 驗證它是音量,內存和CPU - 然後獲取每月價格。我用JSON解析做了一些嘗試,但顯然,我還沒有很好地掌握它。

任何幫助將不勝感激。

+3

我想你'正在討論*導航*一個對象,而不是*解析*。 「解析」這個詞是關於解釋一個字符串來識別語法的。它看起來像你已經把你的JSON字符串解析成一個對象。 – Pointy

+0

因此,我應該尋找幫助,然後導航對象,正確。好。我非常感謝你的反饋。謝謝。 – Ace

+0

你是如何得到你的json的。是通過使用ajax還是post或者什麼。知道這可能有助於爲你發​​佈一個合適的答案 –

回答

3

如果你想找到的對象 「卷」, 「公羊」 和 「CPU」 這很簡單:

var volume = x.prices.volume; 
var ram = x.prices.server.ram; 
var cpu = x.prices.server.cpu; 

或者您可以直接使用它們:

console.log(x.prices.volume); 

如果你想找到月租價格則:

var prices = x.prices; 
console.log('volume, monthly=', prices.volume.gb.monthly); 
console.log('cpu, monthly=', prices.server.cpu.monthly); 
console.log('ram, monthly=', prices.server.ram.monthly); 

JavaScript對象是非常簡單的,只有2個語法來訪問他們:

// If the key you're accessing is a constant (hardcoded): 
object.key = value; 

// If the key you're accessing is stored in another variable: 
var k = "key"; 
object[k] = value; 

// Alternatively: 
object["key"] = value; 
+0

天才。謝謝!非常! – Ace

1

我只是有點困惑,但是繼承了一個例子。將你的json保存到一個變量中,然後沿着帶有節點名稱的樹(除非沒有)。

這應該拿貨量每月

json.prices.volume.gb.monthly 

http://jsfiddle.net/PKUBA/

+1

詭異的魔法!感謝您的幫助。我真的很感動。 – Ace