【问题标题】:Turning a string into an object in JavaScript在 JavaScript 中将字符串转换为对象
【发布时间】:2017-05-07 20:36:22
【问题描述】:

我正在尝试用不是典型 JSON 字符串的字符串创建一个对象。

示例如下:

 var ObjectInString = "{x:62.43993,y:293.64093}"; //string i want to turn into an object
var ObjectWhichWorks = {x:62.43993,y:293.64093};

console.log(ObjectInString);
console.log(ObjectWhichWorks);

【问题讨论】:

  • 使用JSON.parse(string)将字符串转换为对象
  • 你有same problem as described here吗?如果是这样,这是重复的。如果不是,请解释原因。
  • 这个问题的解决方案对我不起作用。
  • 试试JSON.parse(JSON.stringify(ObjectInString))
  • 我需要有与被剪断的对象相同的输出。

标签: javascript parsing


【解决方案1】:

您可以使用eval 来解释字符串中的JavaScript 表达式。我们需要将此值括在括号中,以便将其正确解析为对象字面量,而不是无效语句。

var ObjectInString = "{x:62.43993,y:293.64093}";
var Object = eval("(" + ObjectInString + ")");

console.log(ObjectInString);
console.log(Object);

但是,eval 与不受信任的数据一起使用是一个巨大的安全漏洞。仅对来自完全受信任的来源的数据执行此操作,并寻找替代方案(例如使用您可以尽快使用JSON.parse(...) 解析的有效 JSON 数据。

【讨论】:

    【解决方案2】:

    假设您的键始终是 xy,通过在这些键周围添加双引号将字符串转换为有效的 JSON 字符串。然后您可以使用JSON.parse() 来获取所需的对象:

    var o = '{x:62.43993,y:293.64093}';
    
    console.log(JSON.parse(o.replace('x', '"x"').replace('y', '"y"')));

    【讨论】:

      【解决方案3】:

      很多年前,我一直在寻找这个解决方案。

      var obj = eval ("(" + ObjectInString + ")");
      

      我不知道跨浏览器支持或其他什么,只知道它对我有用。

      【讨论】:

        猜你喜欢
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        • 2016-07-16
        • 1970-01-01
        • 2021-08-21
        • 2020-12-30
        相关资源
        最近更新 更多