我有这样一个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