2013-11-26 4 views
0

У меня есть текст JavaScript:Создать объект из текста

var textObject = ' 

     { 
      news: [ 
                 { 
       "title":"aaa", 
       "desc":"bbb" 
       },          { 
       "title":"ccc", 
       "desc":"ddd" 
       }   ] 
     }; 

' 

, но это в тексте в моей переменной. Если у меня это в коде html, это нормально работает, но я получаю эти данные с помощью ajax из PHP-скрипта.

Так как я могу преобразовать/разобрать этот текст на объект? Если у меня есть JSON, то я могу использовать JSON.parse (textObject); но это не json.

+5

Вы можете превратить его в json? все, что отсутствует, это кавычки вокруг новостей и удаление полуколоны –

ответ

1

Eval нахмурился по множеству причин, однако он также имеет свои преимущества при правильном использовании, он используется для многих движков шаблонов и нескольких других вещей, но он преобразует строку в объект.

var someString = '{obj: "with content"}'; 
eval(someString); 

Вот рабочий пример с вашей строки: http://jsfiddle.net/kkemple/CwzRh/

1

Использование eval может привести к серьезной деградации производительности.

Поскольку вы не можете использовать JSON, используйте вместо этого конструктор Function, чтобы уклонение происходило в глобальной области видимости, а браузеры все еще могут оптимизировать локальный код.

var result = new Function("return " + textObject.trim())(); 

Вам нужно Призонная шайба .trim() для поддержки IE8. Если строка отображается так, как вы показываете с разрывами строк в начале, тогда потребуется .trim().

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