Я поклонник метода Джона Ресига «Поиск и не заменяю» для этого типа:
var str = 'foo=bar, baz=quux',
arr = [],
res = '{';
str.replace(/([^\s,=]+)=([^,]+)(?=,|$)/g, function ($0, key, value) {
arr.push('"' + key + '":"' + value + '"');
});
res += arr.join(",") + "}";
alert(res);
Рабочий пример: http://jsfiddle.net/cm6MT/ .
Делает вещи намного проще без необходимости поддержки JSON. Конечно, так же легко использовать одно и то же регулярное выражение с exec()
или match()
.
Упс, я думал, что вы хотите преобразовать строку JSON, а не объект. В этом случае вам нужно немного изменить код:
var str = 'foo=bar, baz=quux',
res = {};
str.replace(/([^\s,=]+)=([^,]+)(?=,|$)/g, function ($0, key, value) {
res[key] = value;
});
console.log(res.foo);
//-> "bar"
Рабочий пример 2: http://jsfiddle.net/cm6MT/1/