2016-12-27 10 views
-1

У меня есть фрагмент кода с Eval(), как показано ниже:Ошибка при преобразовании Eval() в JSON.parse()

var data = "{listUpdated:[],listConflictOrMerge:[]}"; //returned from Ajax 
 

 
var results = eval("(" + data + ")"); 
 

 
console.log(results)

Как вы можете видеть, данные это мое входное значение, возвращаемое из запроса ajax. При использовании eval() он может обрабатываться двумя объектами массива.

И теперь я больше не хочу использовать eval(), поэтому я пытаюсь использовать JSON.parse(). Однако есть ошибка.

var data = "{listUpdated:[],listConflictOrMerge:[]}"; //returned from Ajax 
 

 
var results = JSON.parse(data); 
 

 
console.log(results)

моя цель состоит в том, что я не хочу использовать Eval() больше для анализа данных.

  • Итак, можно ли это сделать?

  • Я пытаюсь использовать JSON, но мне не повезло. Я где-то ошибаюсь?

+0

Вы не можете использовать 'JSON.parse' выполнить произвольный код на JavaScript. Это предназначено только для JSON. –

+1

'' {listUpdated: [], listConflictOrMerge: []} "это недопустимо JSON - ключи должны быть в двойных кавычках. Это правильное представление: '' {"listUpdated": [], "listConflictOrMerge": []} '' – vlaz

+0

вы правы, @vlaz. –

ответ

0


 

 
var data = '{"listUpdated":[],"listConflictOrMerge":[]}'; 
 

 
var results =JSON.parse(data); 
 

 
console.log(results)

7

Данные, которые вы пытаетесь разобрать не является допустимым JSON, поэтому JSON.parse не может разобрать его.

Ключи в объектах JSON должны быть указаны как любая другая строка. Форма, которую вы используете, действительна в Javascript, но недействительна в JSON.

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

  • Нет связанных вопросов^_^