【问题标题】:Create object from a string, javascript从字符串创建对象,javascript
【发布时间】:2013-06-01 07:28:34
【问题描述】:

是否可以从字符串内容创建对象?

例如,我有一个字符串"{ name: John }",我如何简单地解析它来创建一个对象{ name: 'John' }

更新

不幸的是JSON.parse 对我不起作用,可能还有一些棘手的字符串(如果你使用过 mongodb 你知道),例如{ name: John, email: { $exists: true } }

也许还有其他解决方案,例如 mongodb 查询解析器?

【问题讨论】:

  • 你为什么使用这种格式?
  • 你从哪里得到这些字符串?
  • 用户将它们放入 shell

标签: javascript string parsing object


【解决方案1】:

这是一种方法。 //修剪方法的代码

 if(typeof String.prototype.trim !== 'function') {
      String.prototype.trim = function() {
        return this.replace(/^\s+|\s+$/g, ''); 
      }
    }

    var s =  "{ name: John }";
    var arr = s.substring(1,s.length-1).trim().split(':');
    var obj = {};
    obj[arr[0]]=arr[1];

    alert(obj.name);

【讨论】:

  • "{ name: John, family: Resig }" 呢?
  • 这种技术我已经用过了,"{ name: John, family: Resig }"需要先在,上拆分
  • 但在我的情况下,可以使用更复杂的技术,例如 { name: John, email: { $exists: true }}
【解决方案2】:

如果你能得到'{"name":"John"}',那么你可以把它解码为JSON。

【讨论】:

    【解决方案3】:

    Working jsFiddle Demo

    您的字符串必须是有效的 JSON 格式:

    var s = '{ "name": "John", "family": "Resig" }';
    

    然后你可以用JSON.parse解析它:

    var o = JSON.parse(s);
    

    你可以使用对象o

    alert(o.name); // John
    alert(o.family); // Resig
    

    【讨论】:

    • 不幸的是,我不能确定它是否是正确的 JSON,字符串可能是这样的{ data: $exists },似乎只有分割和切片可能会有所帮助
    • @Kosmetika 你是如何生成 JSON 的?所有服务器端语言都能够生成有效 JSON 字符串。
    • 它不是 JSON,它是用户放入 shell 的简单字符串
    • @Kosmetika 我认为这不是正确的方法。想象一下用户想要这样的东西:{ "fullname": "Resig, John: jQuery Creator" }(一对对象)。这必须如何输入? { fullname: Resig, John: jQuery Creator }(一个有两对的对象)?
    • 是的,听起来不太好......在理想情况下,它可以像 { fullname: "Resig, John: jQuery Creator" }..
    猜你喜欢
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多