我不太了解JavaScript,但是这里列出了我想做的事情。

我有一个由外部来源准备的JSON对象。我按原样使用该Object字符串连接到我准备的另一个JSON对象,但是问题是每个键都必须在它们前面有一个名称空间缩写。

这就是我所拥有的:

obj1 = {
  "key1": "value",
  "key2": "value",
  "key3": "value",
  "key4": {
   "subkey1": "value",
   "subkey2": "value"
  }
}


而我希望它变成:

obj1 = {
  "ns:key1": "value",
  "ns:key2": "value",
  "ns:key3": "value",
  "ns:key4": {
   "ns:subkey1": "value",
   "ns:subkey2": "value"
  }
}


这应该动态完成,因为它将用于同一项目的多个不同方面。所以我希望简单地拥有一个函数,无论我给什么,我都将'obj1'传递给它并吐出转换后的JSON对象。

最简单的方法是什么?同样,我不习惯JavaScript,因此欢迎您举一些例子。

PS。 CoffeeScript解决方案也是可以接受的。我基本上是用JS编写出来的,然后使用js2coffee.org进行转换。

最佳答案

尝试检查代码以查看是否错过了任何未处理的案例。我猜你在使用它之前必须先检查一些事情...

var obj1 = {
  "key1": "value",
  "key2": "value",
  "key3": "value",
  "key4": {
   "subkey1": "value",
   "subkey2": "value"
  }
};

var rename = function(obj, prefix){

    if(typeof obj !== 'object' || !obj){
        return false;    // check the obj argument somehow
    }

    var keys = Object.keys(obj),
        keysLen = keys.length,
        prefix = prefix || '';

    for(var i=0; i<keysLen ;i++){

        obj[prefix+keys[i]] = obj[keys[i]];
        if(typeof obj[keys[i]]=== 'object'){
            rename(obj[prefix+keys[i]],prefix);
        }
        delete obj[keys[i]];
    }

    return obj;
};

关于javascript - 将 namespace 放在所有JSON对象的键之前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17200122/

10-13 06:32