我有這樣一個JSON:獲取JSON值不字符串前綴
變種X = { 「富:酒吧」: 「XYZ」};
我可以通過調用x [「foo:bar」]來獲得xyz,但無論如何通過調用bar來取得xzy並刪除foo前綴?像x [「酒吧」]? json是從xml中用名字空間轉換的,我無法改變它。由於
我有這樣一個JSON:獲取JSON值不字符串前綴
變種X = { 「富:酒吧」: 「XYZ」};
我可以通過調用x [「foo:bar」]來獲得xyz,但無論如何通過調用bar來取得xzy並刪除foo前綴?像x [「酒吧」]? json是從xml中用名字空間轉換的,我無法改變它。由於
可以遍歷的屬性名稱,並刪除前綴:
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
如果json的結構更復雜,例如:它有child和array嗎? – Duc
您可以創建一個JSON字符串這將是這樣的:
var x = {"foo":"xyz"};
當前的關鍵:"foo:bar"
沒有在JSON任何特殊的意義,這是關鍵的組成部分。
在任何生產環境中去@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"
創建您的JSON,使鑰匙只是'酒吧'。 –
「正確」是什麼意思?誰創建了json - 你呢?如果是你,只需按照@JustinWood的建議,並修改你輸出的方式。 –
json是從xml轉換而來的名稱空間,我不能改變它:( – Duc