我有一个字符串变量,它是对象的字符串表示形式。像这样:
{
"column": "'asdf'",
"sort": "true",
"search": "{\"asdf\":\"searchval\"}"
}
我想将上面的字符串转换为如下所示的对象:
{
column: 'asdf',
sort: 'true',
search: {
asdf: 'searchval'
}
}
我打算进行搜索并替换引号和反斜杠的正则表达式,然后使用eval(),但这似乎不安全且效率低下。是否有更好的替代方法?
我打算将字符串的对象值分配给对象变量。
答案 0 :(得分:1)
发布此消息后,我发现有一个JSON.parse();
函数。我没有删除这个问题的唯一原因是它可能会节省一些时间。
您需要做的就是将字符串变量作为参数传递,它将输出一个对象。
如果有人发现此解决方案有任何问题,或者知道更好的解决方案,请回答!
答案 1 :(得分:1)
你试过JSON.parse();了吗?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
var myOriginalData = JSON.stringify({"column": "'asdf'","sort": "true","search": "{\"asdf\":\"searchval\"}"});
myNewData = JSON.parse(myOriginalData, function (key, value) {
var type;
if (value && typeof value === 'object') {
type = value.type;
if (typeof type === 'string' && typeof window[type] === 'function') {
return new (window[type])(value);
}
}
return value;
});
console.log('myNewData -----------------------------------------------------------');
console.log(myNewData);