【发布时间】:2013-02-17 23:52:33
【问题描述】:
我正在尝试构建一个快速的 JavaScript 函数,它将接收这样的 JavaScript 对象:
{
"sample[one]": "value 1",
"sample[hard][damn_you[0]]": "this 1",
"sample[hard][damn_you[1]]": "this 2"
}
然后把它改成这样:
{
"[sample][one]": "value 1",
"[sample][hard][damn_you][0]": "this 1",
"[sample][hard][damn_you][1]": "this 2"
}
微妙但很大的不同。我已经完成了第一部分,其中包括将文本的第一部分包裹在方括号中,但是当谈到取出嵌套的方括号并将它们取出时,我不知所措。我已经尝试了很长一段时间没有成功。到目前为止,这是我所拥有的:
var data = {
"sample[one]": "value 1",
"sample[hard][damn_you[0]]": "this 1",
"sample[hard][damn_you[1]]": "this 2"
},
subset = /^([a-z0-9-_]+?)\[/i;
for (var key in data) {
if (subset.test(key)) {
data[key.replace(subset,'[$1][')] = data[key];
} else {
data[key.replace(/^(.+)$/,'[$1]')] = data[key];
}
delete data[key];
}
哪个输出这个:
{
"[sample][one]": "value 1",
"[sample][hard][damn_you[0]]": "this 1",
"[sample][hard][damn_you[1]]": "this 2"
}
但是在提取那些嵌套的方括号时我不知所措。有什么想法吗?
【问题讨论】:
-
正则表达式和“嵌套”通常是一个糟糕的组合......
-
我同意。你会推荐什么替代方案?当我试图找到另一种方式时,我不知所措。任何建议将不胜感激!
标签: javascript regex json square-bracket