json parse output problem . SyntaxError: Unexpected token o

4,855 views
Skip to first unread message

Roelof Wobben

unread,
Jan 21, 2015, 12:04:15 PM1/21/15
to nod...@googlegroups.com
Hello,

I have this :

~~~

var user = {
  username: 'The Reddest',
  email: 'bra...@switchonthecode.com',
  firstName: 'Brandon',
  lastName: 'Cannaday'
};
JSON.parse(user, function (k, v) {
    console.log(k);           
    return v;                
})

~~~

but when I do node test.js to run the file I see this output :

~~~

undefined:1                                                                                                                                                                            
[object Object]                                                                                                                                                                        
 ^                                                                                                                                                                                     
SyntaxError: Unexpected token o                                                                                                                                                        
    at Object.parse (native)                                                        

~~~

Can somone tell me what is the right way to parse and see the output of a json file.

Roelof

mscdex

unread,
Jan 21, 2015, 3:20:19 PM1/21/15
to nod...@googlegroups.com
On Wednesday, January 21, 2015 at 12:04:15 PM UTC-5, Roelof Wobben wrote:
var user = {
  username: 'The Reddest',
  email: 'bra...@switchonthecode.com',
  firstName: 'Brandon',
  lastName: 'Cannaday'
};
JSON.parse(user, function (k, v) {
    console.log(k);           
    return v;                
})


`user` is already an object (not JSON), so there is nothing to parse. You would have to `JSON.stringify(user)` first and parse that result for that code to work.

William Kapke

unread,
Jan 21, 2015, 3:53:29 PM1/21/15
to nod...@googlegroups.com
It looks like you're wanting to stringify the object instead of parse it.

-Wm

--
Job board: http://jobs.nodejs.org/
New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+un...@googlegroups.com.
To post to this group, send email to nod...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/f6ee7fc4-a692-433c-b6fa-55562d4c0978%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Rick Waldron

unread,
Jan 21, 2015, 3:53:31 PM1/21/15
to nod...@googlegroups.com
In the code above, there is an object, not JSON. JSON is the serialized (string/text) representation of a subset of JavaScript "data". That "data"  can be a string, number, array, object, null, true, or false

```
$ node
> JSON.parse('"a"')
'a'
> JSON.parse('1')
1
> JSON.parse('[]')
[]
> JSON.parse('{}')
{}
> JSON.parse('null')
null
> JSON.parse('true')
true
> JSON.parse('false')
false
```


When you store JSON in a file, like so: 

// a.json
{
  "name": "Rick", 
  "age": 33
}

... It must be valid, per the grammar rules of JSON, note the strings are all double quoted, but the number is not.

// a.js
var fs = require("fs");
fs.readFile("a.json", "utf8", function(err, json) {
  // turn the valid json text back into an object.
  var object = JSON.parse(json);
  console.log(object);

  console.log(typeof json);
  console.log(typeof object);
});


$ node a.js
{ name: 'Rick', age: 33 }
string
object




Rick

Alexander Behrens

unread,
Jan 21, 2015, 3:53:37 PM1/21/15
to nod...@googlegroups.com
JSON.parse expects a string as an argument, not an object.

Adrien Risser

unread,
Jan 21, 2015, 3:53:46 PM1/21/15
to nod...@googlegroups.com

You should have a better look at JSON.parse documentation.
This method doesn't take an object.

Cheers,

--
Adrien Risser, 
Node.js Consultant
+33 6 59 60 32 58

Reply all
Reply to author
Forward
0 new messages