最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - JQuery.parseJSON not working with string - Stack Overflow

programmeradmin4浏览0评论

I am trying to parse a string into an object. I have looked at the jQueryparseJSON documentation at the following link I've also included the jquery library so I know it's not that.

This is my code so far

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

In Firebug I am getting the following errors:

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

I know the solution is more than likely very simple, but I have been repeatedly overlooking it.

I am trying to parse a string into an object. I have looked at the jQueryparseJSON documentation at the following link I've also included the jquery library so I know it's not that.

This is my code so far

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

In Firebug I am getting the following errors:

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

I know the solution is more than likely very simple, but I have been repeatedly overlooking it.

Share Improve this question edited Jul 14, 2014 at 17:05 Anri 1,6932 gold badges18 silver badges36 bronze badges asked Jul 14, 2014 at 16:54 beebee 1,6237 gold badges30 silver badges63 bronze badges 1
  • Have a look at stackoverflow./questions/24592841/… – Musa Commented Jul 14, 2014 at 16:59
Add a ment  | 

4 Answers 4

Reset to default 6

The test string in your sample code is not valid JSON:

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

Now, if you're doing all this because some service is making that object available as a JSON string, it's probably the case that jQuery will do the parsing step for you anyway. If you're just trying to include an object literal into your JavaScript code, then there's no reason to involve the JSON services at all:

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

creates an object.

Note that JSON syntax is stricter than JavaScript object literal syntax. JSON insists that property names be quoted with double-quote characters, and of course values can only be numbers, strings, booleans, or null.

Your string is not valid JSON. Object keys must be surrounded with double quotes, not single quotes.

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

DEMO

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/guest271314/n8jLG/

You have a typo error in your code :

here var obj = jQueryparseJSON( str );

should be var obj = jQuery.parseJSON( str );

发布评论

评论列表(0)

  1. 暂无评论