我正在从数据库中读取对象初始化程序字符串,但却看不到任何简单的方法将它们转换回对象。
例如,给定以下字符串,您将如何将其转换为对象?
var initializer = "{type: car, colour: red, engine: 2.0L}";
我最后通过逐个循环来解码它们,但觉得必须有更好的方法。
答案 0 :(得分:0)
在不太可能的情况下,您不应该按照自己的意愿从服务器返回JSON,而是自己最终解析这个,这里有你如何做到这一点:
initializer
.replace(/^\{|\}$/g, '') // remove {} at beginning and end
.split(',') // break apart into key: val pairs
.reduce(function(result, keyval) { // build object
var parts = keyval.split(':').map(''.trim);
result[parts[0]] = parts[1];
return result;
}, {});
当然,您可能想要为此添加一堆防弹。
如果您正在使用Underscore,您可以使用它从[key,val]对数组创建对象的能力:
_.object(initializer
.replace((/^\{|\}$/g, '')
.split(',')
.map(function(keyval) {
return keyval.split(':').map(''.trim);
})
);
答案 1 :(得分:0)
由于您的数据未被引用,因此数据类型之间没有区别,所有内容都必须解析为字符串。
我会尝试先创建有效的可解析数据,而不是尝试解析这个问题。