2015-09-18 6 views
0

У меня есть эта строка, которую я получаю от кода позади:Преобразование строки в массив объектов в JavaScript

{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"} 

Мне нужно, чтобы преобразовать его в массив объектов, как это:

var Categories = 
[ 
    {Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, 
    {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, 
    {Name:"Belt", CatGroupName:"Leather", Gender:"child"} 
]; 

Поскольку Мне нужно выполнить некоторые функции на нем. (например, $.grep и т. д.)

Как его преобразовать? Thanx заранее.

+6

Сделайте свой "код позади" генерировать JSON, а затем использовать 'JSON.parse'. Также это не ассоциативный массив, это массив объектов. –

+2

Как вы получите это из кода? Потому что, как предлагает @FelixKling, вы должны исправить это, чтобы вернуть фактический JSON вместо того, что должно быть. Вы можете попытаться проанализировать то, что у вас есть с регулярным выражением, или что-то добавить цитаты вокруг имен свойств, но это было бы ужасным взломом. Исправьте его у источника. –

+0

@FelixKling Извините, что вы правы. Это массив объектов. –

ответ

3

Лучшее решение состоит в том, чтобы сделать backend правильным JSON, и вам не нужно ничего делать, чтобы обработать его на клиенте. Чтобы сделать его действительным JSON, вам нужно обернуть ключи двойными кавычками и обернуть всю строку скобками, чтобы сделать ее массивом.

BUT Если вы не можете коснуться задней части, вы можете использовать новую функцию для ее преобразования.

var str = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}'; 
 
var obj = (new Function("return [" + str + "];")()); 
 
console.log(obj);

+0

Интересное решение! Удары с использованием JSON.parse :-) – Stumblor

+0

Thanx дорогой epascarello. Не знал, что есть такое решение! –

+0

@Stumblor Это то, что много полиномов JSON.parse делают под капотом и почему pollyfills обычно допускают недействительный JSON. :) – epascarello

Смежные вопросы