2013-10-22 88 views
0

我有這樣一個JSON:獲取JSON值不字符串前綴

變種X = { 「富:酒吧」: 「XYZ」};

我可以通過調用x [「foo:bar」]來獲得xyz,但無論如何通過調用bar來取得xzy並刪除foo前綴?像x [「酒吧」]? json是從xml中用名字空間轉換的,我無法改變它。由於

+2

創建您的JSON,使鑰匙只是'酒吧'。 –

+0

「正確」是什麼意思?誰創建了json - 你呢?如果是你,只需按照@JustinWood的建議,並修改你輸出的方式。 –

+0

json是從xml轉換而來的名稱空間,我不能改變它:( – Duc

回答

2

可以遍歷的屬性名稱,並刪除前綴:

function removePrefix(x){ 
    var temp = {}; 
    for(var key in x){ 
     temp[key.substr(key.indexOf(':')+1)] = x[key]; 
    } 
    return temp; 
} 

var x = {"foo:bar":"xyz"}; 

x = removePrefix(x); 

console.log(x['bar']); // xzy 
console.log(x.bar); // xyz 
+0

如果json的結構更復雜,例如:它有child和array嗎? – Duc

0

您可以創建一個JSON字符串這將是這樣的:

var x = {"foo":"xyz"}; 

當前的關鍵:"foo:bar"沒有在JSON任何特殊的意義,這是關鍵的組成部分。

0

在任何生產環境中去@MrCode(或對您的問題第一個註釋),但如果你只是有一個有點樂趣,你總是可以嘗試生活在邊緣...

var x = {"foo:bar":"xyz"}; 

for(i in x){ 
    if(x.hasOwnProperty(i)){ 
     var m = /^foo:(.*)$/.exec(i); 
     if(m.length) x.__defineGetter__(m[1], function(){ 
      return this['foo:'+m[1]]; 
     }); 
    } 
} 

console.log(x.bar); // "xyz"