Como resolver erro Unexpected token o in JSON at position 1
Neste artigo você vai aprender a como resolver erro Unexpected token o in JSON, um erro muito comum ao trabalhar com JSON
O erro Unexpected token o in JSON at position 1 aparece quando você entrega um objeto JavaScript pro JSON.parse em vez de uma string JSON
O caractere da posição 1 dessa string é a letra o, e é dela que vem a mensagem
Ou seja: o problema não é o seu JSON estar quebrado, é o dado JÁ ser objeto
O conserto é simples: se o valor já é objeto, use ele direto, sem parse
Só passe pelo JSON.parse o que for string JSON mesmo, como no exemplo abaixo

Fala programador(a), beleza? Bora aprender mais sobre JSON e seus erros!
Você não pode utilizar o JSON diretamente, precisa antes fazer um parse para poder tê-lo como objeto
Algumas das possíveis causas para este erro são:
- JSON mal formatado;
- Utilização incorreta do tipo de dado;
- JSON mal construído;
- Não utilização correta dos métodos de conversão;
Antes de utilizar o dado JSON, passe pelo método parse, desta maneira:
const myJson = '{"name": "Matheus", "age": 30}'
const myObject = JSON.parse(myJson)
console.log(myObject.name) // Matheus
Aqui temos um JSON corretamente criado, que é convertido para objeto JavaScript, assim não temos erro algum
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Quer entender mais sobre JSON? Confira o vídeo abaixo:
Uma outra dica interessante é verificar se seu JSON está corretamente criado conforme os padrões estabelecidos por este tipo de dado
Inclusive no vídeo te explico todos os detalhes para criar bons JSON’s, que sempre vão funcionar
Este tipo de dado é frequentemente utilizado entre a comunicação de sistemas, como em APIs
Conclusão
Neste artigo você vai aprender a como resolver erro Unexpected token o in JSON
Utilizamos o método parse para conversão do dado em JSON
Foi também evidenciado a possível má formação do JSON, que deve ser cuidadosamente observada
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias! Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias. O link acima contém um cupom de desconto para os curso
Fechar com a saída prática: se o dado JÁ é objeto, não passa pelo parse
Citar os exemplos do próprio commit: JSON.parse(NaN) saiu de ‘Unexpected token N in JSON at position 0’ pra ‘"NaN" is not valid JSON’, e JSON.parse("{a:1}") saiu de ‘Unexpected token a in JSON at position 1’ pra "Expected property name or ‘}’ in JSON at position 1". Deixar claro que a mensagem varia por engine e versão, e que a causa é a mesma
Seção ‘E no Firefox, qual é a mensagem?’ mostrando que o Firefox reporta o mesmo problema com outro texto e usando linha e coluna em vez de posição: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Seção ‘Você provavelmente não precisa do JSON.parse’ com dois casos práticos: com fetch, o response.json() já devolve uma Promise que resolve com o corpo já convertido em valor JavaScript (objeto, array, string, número), então chamar JSON.parse depois dele quebra; com axios, o transformResponse padrão já usa o JSON.parse nativo (é o que o parseReviver e o forcedJSONParsing da doc controlam), então o response.data normalmente já vem objeto. Mostrar o antes e o depois em bloco de código
Sublista com as causas clássicas de JSON inválido listadas na página de erros do MDN, que derrubam o JSON.parse mesmo quando o dado é string: vírgula sobrando (trailing comma), aspas simples no lugar de aspas duplas nas propriedades, zeros à esquerda em números, string não terminada e escape inválido
Seção ‘E quando o JSON vem de um arquivo?’ explicando que em módulos ES a importação usa import attributes, padronizada no ECMAScript 2025: import config from "./config.json" with { type: "json" }, e que a forma antiga com assert { type: "json" } foi substituída
Bloco de FAQ com as perguntas do campo geo.faq, cada resposta em 2 a 3 linhas
Não há material próprio sobre este erro pra sustentar bloco de primeira mão, e o vídeo disponível é sobre JWT, assunto vizinho mas não o mesmo, então nada de ‘testamos’ aqui
Pra abrir esse bloco depois, o que precisa ser capturado com material real: rodar JSON.parse({ nome: ‘Matheus’ }) no console do Chrome atual e no Node instalado na máquina e colar as mensagens exatas que saírem, rodar o mesmo no Firefox pra registrar a versão com linha e coluna, e gravar um caso de fetch onde a pessoa chama response.json() e depois JSON.parse por cima, mostrando o erro nascendo
Gancho natural com o vídeo de JWT: o payload decodificado do token costuma chegar como objeto, e é aí que muita gente manda um parse a mais e toma esse SyntaxError. Só que isso precisa ser reproduzido e registrado em vídeo ou print antes de virar texto em primeira pessoa
Perguntas frequentes
O que significa Unexpected token o in JSON at position 1?
Significa que o JSON.parse recebeu um valor que não é string JSON
O parse lê esse o, não reconhece como JSON válido e lança o SyntaxError
Por que a mensagem fala justamente da letra o?
A posição 0 é o colchete de abertura, que o parser até aceita como início de array
O estouro acontece no caractere seguinte, e é ele que aparece na mensagem
Meu erro aparece como "[object Object]" is not valid JSON, é o mesmo problema?
É o mesmo problema, com texto novo
O V8 reescreveu as mensagens do JSON.parse na iniciativa de melhoria de mensagens (issue v8:6551, commit de 16/05/2022): JSON.parse(NaN) saiu de "Unexpected token N in JSON at position 0" pra ‘"NaN" is not valid JSON’
A mensagem exata depende do navegador e da versão do Node.js, então o texto antigo ainda aparece em ambientes mais velhos
E no Firefox, qual mensagem aparece?
O Firefox reporta com outro texto e usando linha e coluna em vez de posição
A mensagem é: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Muda a frase, a causa é a mesma
Preciso usar JSON.parse depois do fetch?
Não
O response.json() devolve uma Promise que resolve já com o resultado do parse do corpo: objeto, array, string, número e por aí vai
Chamar o JSON.parse em cima disso é justamente o que gera o erro, porque o valor já é objeto
E com axios, por que dá esse erro?
Pelo mesmo motivo
O axios já faz o parse por padrão: o transformResponse padrão usa o JSON.parse nativo (é o que o parseReviver da doc alimenta como reviver, e o que o forcedJSONParsing força)
Então o response.data normalmente já chega como objeto e não deve passar por parse de novo
Como saber se o problema é o dado ou o meu JSON?
Dá pra separar em dois casos
Se a mensagem cita outro caractere, o problema é a string mesmo: a página de erros do MDN lista as causas clássicas, vírgula sobrando, aspas simples no lugar de aspas duplas nas propriedades, zeros à esquerda em números, string não terminada e escape inválido
O JSON.parse sempre lança erro quando a string é inválida?
Sim
O JSON.parse analisa a string segundo a gramática JSON e lança SyntaxError se ela não for JSON válido
Por isso vale envolver o parse em try catch quando o dado vem de fora, tipo resposta de API ou de localStorage
Como importar um arquivo .json sem cair nesse erro?
Em módulos ES a importação usa import attributes, padronizada no ECMAScript 2025
A forma é: import config from "./config.json" with { type: "json" }
A sintaxe antiga com assert { type: "json" } foi substituída
Leia também
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]

não entendi o que essa “vídeoaula” tem a ver com solução do problema em questão