代码之家  ›  专栏  ›  技术社区  ›  volna

用写为字符串的键值拆分javascript对象[关闭]

  •  -3
  • volna  · 技术社区  · 7 年前

    代码模式读取 dataset 并接收以下输出。

    var objectString = '{"name": "Name", "description": "desc", "extra": "extra"}'
      
    console.log(typeof objectString)

    你能建议一种有效的方法把它转换成key:value对吗?

    自从 JSON.parse(objectString) 后来的结果

    syntaxerror:位置1的json中出现意外的标记o

    它假设已经是一个对象,但是 objectString.name 返回 undefined

    更新

    抱歉,json.parse在浏览器中确实有效。但是我没有提到代码项目有jest tester验证它,所以它抛出了语法错误。这就是为什么我在寻找类似的方法。

    是否可以拆分字符串单词,循环并返回一个对象 key: pair ?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ivan Jeffrey Zhao    7 年前

    这就是为什么我在寻找类似的方法

    这是一个代码,可以将字符串转换为对象。这只是一些字符串操作来获得正确的格式。然后一个 forEach 循环以将键/值对附加到对象中。

    // removes white spaces and first and last characters around string
    let shape = s => s.trim().substring(1, s.trim().length - 1);
    
    // convert the string into an object
    let convertToObj = function(str) {
    
      let obj = {};
      
      shape(str).split(',').forEach(e => {
        [key, value] = e.split(':');
        obj[shape(key)] = shape(value)
      });
      
      return obj
    
    }
    
    // preview
    obj = convertToObj('{"name": "Name", "description": "desc", "extra": "extra"}')
    console.log(obj)
        2
  •  0
  •   Vikasdeep Singh    7 年前

    检查下面的代码以获取 key : value 作为字符串:

    var objectString = '{"name": "Name", "description": "desc", "extra": "extra"}';
    
    var jsonOb = JSON.parse(objectString);
    
    for (var key in jsonOb) {
        if (jsonOb.hasOwnProperty(key)) {
            console.log(key + " : " + jsonOb[key]);
        }
    }