A JavaScript expression statement can not start with a { because it would cause an ambiguity for the interpreter, which could also see it as a statement block.
So this is considered a statement block with a statement label and a numeric literal instead of an object literal:
{a:1}
But this is considered a statement block with invalid syntax, since there's no statement that can begin with "a":
{"a":1}
But these don't start with a {. They start with the b = so the { is considered to begin the object literal.
b = {a:1}
b = {"a":1}
12.4 Expression Statement
NOTE An ExpressionStatement cannot start with an opening curly brace because that might make it ambiguous with a Block. Also, an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration.
This means that all you need to do is start the expression statement with a different character to make it valid.
For example, you could wrap it in parentheses, and it will work:
({"a": 1})
b={"a":1}is object literal notation resulting in a JavaScript object structure... not JSON data. The notation used looks similar, but the resulting data is different.