πŸŽ„ Get 50% off from our JavaScript course for the holidays! πŸŽ„

How to Fix "Unexpected token o in JSON at position 1"

Ferenc Almasi β€’ 2022 July 09 β€’ πŸ“– 3 min read

In order to fix the "Uncaught SyntaxError: Unexpected token o in JSON at position 1" error in JavaScript, you need to make you are passing a valid JSON string toΒ JSON.parse. Take a look at the following example:

// ❌ Don't
// This will result in "Uncaught SyntaxError: Unexpected token o in JSON at position 1"
JSON.parse({})

// βœ”οΈ Do ensure that you pass a valid JSON
const obj = JSON.stringify({})

JSON.parse(obj)
Copied to clipboard!

The error happens when JSON.parse gets an invalid JSON string. The reason this error message happens is that you try to pass an empty JavaScript object to JSON.parse, resulting in the error.

The object will be converted into a string, and the first character of the converted string happens to be the letter "o". Try to convert an empty object to a string in the following way, and pass the converted string to JSON.parse. You will get the exact same error.

// Converting the empty object to a string
String({})
<- '[object Object]'

// Will result in the same error message
JSON.parse('[object Object]')
Copied to clipboard!

If you know the value you are passing to JSON.parse is already a JavaScript object, then you don't need to use JSON.parse. On the other hand, if you want to convert a value into valid JSON, you need to use JSON.stringify:

// Use JSON.stringify to convert values to JSON
JSON.stringify({ ... })
Copied to clipboard!
Looking to improve your skills? Check out our interactive course to master JavaScript from start to finish.
JavaScript Course

The General Way to Fix the Error

Most of the time, you may not know upfront the value of the variable you are passing to JSON.parse, as the data may be originating from a server. A general way to ensure that you don't run into this error is to use a try-catch where you try to parse the passed value, and catch the error if there is any.

try {
    JSON.parse({})
} catch (error) {
    // This will log out: "SyntaxError: Unexpected token o in JSON at position 1"
    console.log(error)
}
Copied to clipboard!

You can also introduce the following helper function in your codebase, which does the same thing internally. Simply pass the value that you would pass to JSON.parse, and it will either return the parsed value or null.

const parseJSON = json => {
    try {
        return JSON.parse(json)
    } catch (error) {
        return null
    }
}

parseJSON({})   // Returns null
parseJSON('{}') // Returns {}
Helper function for parsing JSON
Copied to clipboard!

You can also use online tools such as JSONLint or JSON Formatter & Validator, in order to validate whether the value you are passing is a valid JSON or not.

Share on
  • twitter
  • facebook
JavaScript Course Dashboard

Tired of looking for tutorials?

You are not alone. Webtips has more than 400 tutorials which would take roughly 75 hours to read.

Check out our interactive course to master JavaScript in less time.

Learn More

Recommended

πŸŽ‰ Thank you for subscribing to our newsletter. x