gpt4 book ai didi

javascript - 将命名空间添加到所有 JSON 对象的键

转载 作者:行者123 更新时间:2023-11-30 10:30:30 25 4
gpt4 key购买 nike

我对 JavaScript 的了解并不多,但这是我正在尝试做的事情的概要。

我有一个由外部源准备的 JSON 对象。我按原样使用该对象来连接到我准备的另一个 JSON 对象,但问题是每个键前面都需要有一个 namespace 缩写。

这就是我所拥有的:

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,因此欢迎提供示例。

附言。 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 - 将命名空间添加到所有 JSON 对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com