I'm getting errors, in both chrome and firefox developer tools, when trying to evaluate the following:
{
"a": "",
"b": ""
}
jsonlint.com tells me it's valid. Putting this code in an actual javascript file and running it works fine. The strangeness shows up only when I run this in the console in chrome developer tools or firebug. What's going on here?
The "Unexpected token u in JSON at position 0" error occurs when we pass an undefined value to the JSON. parse or $. parseJSON methods. To solve the error, inspect the value you're trying to parse and make sure it's a valid JSON string before parsing it.
As you write your JavaScript application, the unexpected token error always occurs because JavaScript expected a specific syntax that's not fulfilled by your current code. You can generally fix the error by removing or adding a specific JavaScript language symbol to your code.
Re: Unexpected token in JSON at position 0 This usually means that an error has been returned and that's not valid JSON. Check the browser developer tools console and network tabs. Turn on Debugging and (after reproducing the error) check the web server error logs.
The JavaScript exceptions "unexpected token" occur when a specific language construct was expected, but something else was provided. This might be a simple typo.
You can't execute JSON in the console. The JavaScript engine thinks its a block statement, with a label.
So this:
{
"a": "", "b": ""
}
is interpreted as a block statement. The Next, the "a":
part is interpreted as a label. The "", "b"
part is interpreted as an expression (two string literals and a comma operator in-between). Now the second :
character is invalid in that position..."a"
is interpreted as a string literal, and the :
is not valid at that position.
You work with JSON like so:
.json
file,JSON.parse()
.(You can also keep JSON data as a string in a variable, for instance, or in the localStorage
object. Either way, in regard to JavaScript, JSON data should always come as a string value.)
Actually, for one-off testing (my main use of the debug console), you can enter JSON object syntax, but you have to assign it to a variable:
> var x ={
"a": "",
"b": ""
}
undefined
> x
Object
a: ""
b: ""
__proto__: Object
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With