【问题标题】:String to Object conversion?字符串到对象的转换?
【发布时间】:2014-09-17 13:59:26
【问题描述】:

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

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

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

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

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

我打算将字符串的对象值赋给一个对象变量。

【问题讨论】:

    标签: javascript regex json string


    【解决方案1】:

    发布后,我立即发现有一个JSON.parse(); 函数。我不删除问题的唯一原因是它可能会在以后节省一些时间。

    您只需将字符串变量作为参数传递,它就会输出一个对象。

    如果有人看到这个解决方案有任何问题,或者知道更好的解决方案,请做出回答!

    【讨论】:

    • 如果您仍然感兴趣,我在上面发布了一个完整的工作示例。
    【解决方案2】:

    你试过 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2012-04-06
      • 2014-03-17
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多