字符串到对象的转换?

时间:2014-07-25 16:33:01

标签: javascript regex json string

我有一个字符串变量,它是对象的字符串表示形式。像这样:

{
    "column": "'asdf'",
    "sort": "true",
    "search": "{\"asdf\":\"searchval\"}"
}

我想将上面的字符串转换为如下所示的对象:

{
    column: 'asdf',
    sort: 'true',
    search: {
        asdf: 'searchval'
    }
}

我打算进行搜索并替换引号和反斜杠的正则表达式,然后使用eval(),但这似乎不安全且效率低下。是否有更好的替代方法?

我打算将字符串的对象值分配给对象变量。

2 个答案:

答案 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);

工作示例: http://plnkr.co/edit/2jLGIxx3AVEceVQsOpxL?p=preview