我想循环一个字符串作为键/值对。数据以字符串形式给出(我使用的是jstorage插件)。
我试图将字符串拆分为数组,但它没有返回正确的键/值。
实施例
"color":"#000000", "font":"12px", "background":"#ffffff",
答案 0 :(得分:7)
如果你总是得到这样的字符串,即双引号中的键和值,你可以将{...}
添加到字符串parse it as JSON:
// remove trailing comma, it's not valid JSON
var obj = JSON.parse('{' + str.replace(/,\s*$/, '') + '}');
如果没有,假设,
和:
不能出现在键或值中,分割字符串也很容易:
var obj = {},
parts = str.replace(/^\s+|,\s*$/g, '').split(',');
for(var i = 0, len = parts.length; i < len; i++) {
var match = parts[i].match(/^\s*"?([^":]*)"?\s*:\s*"?([^"]*)\s*$/);
obj[match[1]] = match[2];
}
答案 1 :(得分:0)
您需要将其评估为JavaScript对象。如果您信任源,或者可以验证内容,则可以执行以下操作:
s = document.createElement('script')
s.type='text/javascript';
s.innerHTML = 'var data = {'+ text + '}';
document.getElementsByTagName('head')[0].appendChild(s);