javascript - 将带点符号的字符串转换为 JSON

标签 javascript object

给定一个字符串作为点符号,我将如何从该字符串创建一个对象(检查已经存在的属性):例如

var obj = {};
stringToObj('a.b', 'value1', obj);
stringToObj('a.b.c', 'value2', obj);

会产生

{
   "a": {
    "b": {
        "_x": "value1",
        "c": {
            "_x": "value2"
        }
    }
    }
 }

我看过this questionthis one但似乎都不足以满足我所做的事情。

有什么想法吗?

最佳答案

如果您正在寻找对象中没有 _x 的解决方案,请尝试此代码。对上面的代码稍作修改(非常棒)

stringToObj = function(path,value,obj) {
  var parts = path.split("."), part;
  var last = parts.pop();
  while(part = parts.shift()) {
   if( typeof obj[part] != "object") obj[part] = {};
   obj = obj[part]; // update "pointer"
  }
 obj[last] = value;
}

作为奖励,如果你想更新现有对象的一部分,上面的代码将起作用:)

 var obj = {a:{b:3}};
 stringToObj("a.b",10,obj);
 console.log(obj); //result : {a:{b:10}}

关于javascript - 将带点符号的字符串转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985676/

相关文章:

powershell - 是否有在 Powershell 5 类中创建脚本属性的正确方法

javascript - 在不同的 html 模板中链接两个面板的方法

javascript - Math.random() 在循环中使用时不会给出新数字

javascript - keystone.js : how can I display content from 2 different models on my index page

javascript - 使用标识符遍历 JSON 对象并获取带有标识符的特定值

object - Swift 结构体是对象吗?

javascript - 无法检测用户何时到达手机上浏览器的末尾

javascript - asp.net 2.0 站点和 <script/> 标记的位置导致问题/冲突

java - 从对象初始化数组会产生 NullPointerException

javascript - jQuery 原型(prototype)和构造函数链接