JQuery.parseJSON не работает со строкой

Я пытаюсь проанализировать строку в объекте. Я просмотрел документацию jQueryparseJSON по следующей ссылке. Я также включил библиотеку jquery, поэтому я знаю, что это не так.

Это мой код до сих пор

var str = "{'val1': 1, 'val2': 2, 'val3': 3}"; var obj = jQueryparseJSON( str ); alert(obj.val1); 

В Firebug я получаю следующие ошибки:

 SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data 

Я знаю, что решение более чем вероятно очень просто, но я неоднократно его игнорировал.

  • Экранирование строк HTML с помощью jQuery
  • Строка UTF-8 неправильно декодирована в AngularJS
  • Фильтрация строк «только для пробелов» в JavaScript
  • Как преобразовать строку в целое число в JavaScript?
  • Получить строковое представление узла DOM
  • Как заменить двойную кавычку двойной кавычкой escape-char в строке с помощью javascript?
  • Как заменить все пробелы в строке
  • Быстрый способ конкатенации строк в nodeJS / JavaScript
  • 4 Solutions collect form web for “JQuery.parseJSON не работает со строкой”

    Строка теста в вашем примере кода недействительна JSON:

     var str = '{"val1": 1, "val2": 2, "val3": 3}'; var obj = jQuery.parseJSON( str ); alert(obj.val1); 

    Теперь, если вы все это делаете, потому что какая-то служба делает этот объект доступным как строка JSON, вероятно, случай, когда jQuery будет делать шаг синтаксического анализа для вас в любом случае. Если вы просто пытаетесь включить литерал объекта в свой код JavaScript, то нет причин вообще привлекать службы JSON:

     var obj = { val1: 1, val2: 2, val3: 3 }; 

    Создает объект.

    Обратите внимание, что синтаксис JSON более строгий, чем синтаксис литерала объекта JavaScript. JSON настаивает на том, что имена свойств цитируются с символами двойной кавычки, и, конечно, значения могут быть только номерами, строками, булевыми или null .

    Строка недействительна JSON. Ключи объектов должны быть окружены двойными кавычками, а не одинарные кавычки.

     var str = '{"val1": 1, "val2": 2, "val3": 3}'; var obj = jQuery.parseJSON(str); alert(obj.val1); 

    DEMO

    В вашем коде есть typo :

    Здесь var obj = jQueryparseJSON( str );

    Должен быть var obj = jQuery.parseJSON( str );

     function str2json (str, val, obj) { var obj = str.indexOf("'") != -1 ? JSON.parse(str.replace(/'/g, "\"")) : JSON.parse(str); return (val === undefined ? obj /* JSON.stringify(obj) */ : obj[val]) }; str2json("{'val1': 1, 'val2': 2, 'val3': 3}", "val1"); // `1` str2json("{'val1': 1, 'val2': 2, 'val3': 3}") // `obj` : `[object Object]` , // `JSON.stringify(obj)` : `{"val1":1,"val2":2,"val3":3}` 

    Jsfiddle http://jsfiddle.net/guest271314/n8jLG/

    JavaScript делает сайт умным, красочным и простым использованием.