JSON.parse, what am I doing wrong? - javascript

So, I'm trying to parse some JSON in Javascript. This feels like it should work, but I'm getting an error. Here's the function call:
JSON.parse("{player: 'green', direction: 'north'}");
And here's the error
VM156:1 Uncaught SyntaxError: Unexpected token p in JSON at position 1
at Object.parse (native)
at <anonymous>:1:6
I'm trying this on an empty web page, no JS libraries are present.
The string, just executed as Javascript creates an object with the two expected attributes.
I've tried wrapping the keys in strings. That didn't parse.
The unexpected token appears to be whatever the first letter is.
What am I doing wrong, how can I parse this object?

That's not valid JSON.
Try this:
JSON.parse('{"player": "green", "direction": "north"}');
Note the double quotes " instead of single quotes ' and the quotes around the object keys.

Related

parse json string with forward slashes - javascript

Looks pretty simple but I am unable to figure it out
var str="[{name:\"House\",id:\"1\"},{name:\"House and Land\",id:\"5\"},{name:\"Land\",id:\"6\"},{name:\"Terrace\",id:\"11\"}]";
JSON.parse(str.replace(/\s/g, "").replace(/\//g, ''));
I am unable to the convert above string(which comes from 3rd party website) to valid json so that I can iterate it on my side
error
VM5304:1 Uncaught SyntaxError: Unexpected token n in JSON at position 2
at JSON.parse (<anonymous>)
JSON requires the keys to be quoted. It appears that your keys are coming in unquoted. So add another .replace statement to insert the quote back in:
.replace(/(\w+):/g, '"$1":');
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
Property names must be double-quoted strings; trailing commas are forbidden.
COMPLETE SOLUTION:
.replace(/(,|{)\s*(\w+)\s*:/g, '$1"$2":');

Uncaught SyntaxError: Unexpected token ' in JSON at position 2

I've an encoded stringifyed JSON object stored in database, I decoded it and loaded it and tried to parse it into an object But I get
Uncaught SyntaxError: Unexpected token ' in JSON at position 2
at JSON.parse ()
Code:
var attr = new Object();
attr = JSON.parse(code[1].replace(/"/g, "'"));
Object decoded:
[{'inputs':0,'type':'variable'},{'inputD':0,'type':'variable'},{'inputI':0,'type':'variable'},{'paras':0,'type':'variable'},{'headers':0,'type':'variable'},{'menus':0,'type':'variable'},{'lists':0,'type':'variable'},{'divs':0,'type':'variable'},{'links':0,'type':'variable'},{'images':0,'type':'variable'},{'elemName':'{}','type':'object'},{'borders':[],'type':'array'},{'nested':[],'type':'array'},{'ribbons':[],'type':'array'},{'tooltips':[],'type':'array'},{'gradColors':'{}','type':'object'},{'events':'{}','type':'object'},{'sTarget':'{}','type':'object'},{'sMain':'{}','type':'object'},{'orignalStyle':'{}','type':'object'},{'objNewStyle':'{}','type':'object'},{'functions':'{}','type':'object'},{'reverse':'{}','type':'object'},{'reverseFunction':'{}','type':'object'},{'scDetails':'{}','type':'object'}]
I have same error, #Philipp Zitzmann is correct.
You must valid json string at https://jsonformatter.curiousconcept.com/
valid json string must have double quote.
JSON.parse({"u1":1000,"u2":1100}) // will be ok
no quote cause error
JSON.parse({u1:1000,u2:1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
single quote cause error
JSON.parse({'u1':1000,'u2':1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
JSON should be wrapped in double quotes like:
{"inputs":0,"type":"variable"}
This is a useful Tool for validating:
https://jsonformatter.curiousconcept.com/
This is not valid json string. Its values and keys should be surrounded with double quotes (not single). So when you do .replace(/"/g, "'") you basically break the JSON standard.
A value can be a string in double quotes, or a number, or true or
false or null, or an object or an array. These structures can be
nested.
A related one. Today I hit the same error. An example is below:
Correct
JSON.parse( "[1,2,3,4,5,6,7,8,9,0]" )
Incorrect
JSON.parse( "[1,2,3,4,5,6,7,8,..." )
Note the 3 dots (...), because a tool showed only few numbers in array, and gave ... for rest.
In other words, string passed to JSON.parse() is invalid, so it gave error.
But it can be any other similar error.
For example, (may be) JSON.parse( "true" ) is correct but JSON.parse( "tr" ) fails, etc.

Uncaught SyntaxError: Unexpected token p in JSON at position 15

I have the Json data , which I am trying to parse in the following fiddle
but its throwing error
Uncaught SyntaxError: Unexpected token p in JSON at position 15
I am unable to paste the json here due to the large size kindly follow the fiddle
var varArray = JSON.parse(jsonData);
console.log(varArray);
Fiddle
https://jsfiddle.net/ffeLtaa6/
any suggestion ?
You have incorrectly wrapped parts of your JSON in quotes
[{"pricing":"{\"price\": ....
^
This shouldn't be here
...
.... \"standingCharge\": \"y\"}}"}]
^
This shouldn't be here
Alternatively, maybe you ARE supposed to have that part wrapped, but then you need to properly escape all backslashes within that part, i.e. \\ instead of just \.
In that case, when you do JSON.parse(jsonData) you would get objects (inside the array) that all have a single property, pricing, with a value that is itself a JSON string.
It looks like your JSON data has objects enclosed in quotations.
Take the error at position 15; The string up to that point as interpreted by parse() is:
[{"pricing":"{"
At this point your parse function is looking for a comma to continue with or end bracket to finish this object.
Now, if you skip down the string to position 3312, you'll see the character sequence }}"}. Those last two brackets match up the ones in the very beginning.
The format of your string should be [{"pricing":"{ ... }"}] if you want a string under "pricing", or [{"pricing":{" ... "}}] if you want the object representing that string.
Take a look at how the object you are JSON-ifying is being constructed, I get the feeling you may be doubling down somewhere on a stringify() function for the parent object members.
I had a the same error "Uncaught SyntaxError: Unexpected token P in JSON at position 0"
the code was working but this message was shown on console with status 200
in my case i managed to avoid the error message by changing the return type from String to Integer
like this:
//before
public String method(){
//code here
return "evrything went as expected";
}
//after
public Integer method(){
//code here
return 0;
}
I think this has something to do with the browser that is expecting to get integers, im gonna update this answer if i discover something else

Unexpected error while parsing JSON in javascript

I am getting a string object after splitting from a text. Now I am trying to convert that text to a JSON object.
Text after Splitting
{location:"Web",initial:"",firmType:"",toaxfrtype:""}
When I am trying to parse it using JSON.parse, I am getting an error,
SyntaxError: Unexpected token l.
I have some other string value as the same in the above text. It was parsing fine using JSON.parse. Only the above string is not working.
Can anybody help me in this issue.
You need quotes " so change
{location:"Web",initial:"",firmType:"",toaxfrtype:""}
to
{"location":"Web","initial":"","firmType":"","toaxfrtype":""}
I have attached the image where it says valid now after correction. You can online validators to validate it first.
This is not JSON. You need to quote all Strings, including the keys.

SyntaxError: JSON.parse: expected property name or '}' while using highcharts

I am trying to implement a line chart using highcharts, in which I want to color specific points.
So I am using following statement.
JSON.parse("[{x: 1,y: 0},{x:2,y:5,marker:{fillColor:'red'}},{x:3,y:8}]");
to color the point (2,5) as red.
But, it is showing error as SyntaxError: JSON.parse: expected property name or '}'
Valid JSON strings require the property names to be quoted.
This can be corrected by quoting the property names like below:
JSON.parse('[{"x": 1, "y": 0}, {"x":2, "y":5, "marker": {"fillColor":"red"}}, {"x":3, "y":8}]');
As it was said earlier JSON object names must to be quoted. So JSON.parse will parse only that string, valid JSON.
But if you can't for any reason change format of your string you can also parse it using eval function which can accept your syntax. But be careful! That's pretty good way for exploit.

Categories