Conversor de JSON para objeto JavaScript

JSON estrito pode ser convertido em um objeto JavaScript com JSON.parse. Literais de objeto JavaScript precisam de uma limpeza antes de virarem JSON válido.

Converter JSON em JavaScript

Se a entrada já é JSON válido, o conversor mais seguro é JSON.parse(jsonText). Ele devolve um objeto, array, string, número, booleano ou null JavaScript comum, sem executar nada.

Entrada JSON

{ "name": "Ada", "active": true, "skills": ["math", "notes"] }

Uso em JavaScript

const user = JSON.parse(jsonText); console.log(user.name);

Entrada de literal de objeto é diferente

Um literal de objeto JavaScript tipo { name: 'Ada', active: true } não é JSON. Antes de passar pelo JSON.parse, conserte chaves sem aspas, troque aspas simples por duplas, remova comentários e vírgulas finais.

Quando evitar eval

Não use eval para transformar texto desconhecido em objeto. eval executa código. JSON.parse só parseia dados — por isso JSON estrito é mais seguro para payloads de API, configuração, logs e exemplos colados.

Casos limítrofes: datas, undefined e funções

JSON não tem tipo Date, undefined ou função. Datas viajam como strings ISO, undefined é descartado no stringify e funções não podem ser representadas. Se um objeto JavaScript contém algum desses, o JSON resultante é um snapshot com perdas — restaure tipos explicitamente com uma função reviver no JSON.parse.

TypeScript e tipos inferidos

JSON.parse retorna 'any' porque o parser não tem como saber a forma adiantado. Para acesso tipado, declare um tipo de retorno (JSON.parse(text) as User) depois de validar com uma biblioteca de schema como zod ou io-ts, ou gere uma interface a partir de um exemplo com a ferramenta JSON to TypeScript.

Direção inversa: objeto para JSON

JSON.stringify(value, null, 2) produz JSON formatado a partir de um valor JavaScript. Silenciosamente descarta undefined, funções e chaves Symbol; referências circulares lançam erro. Passe uma função replacer como segundo argumento para controlar quais campos sobrevivem — útil para limpar internos antes de mandar um objeto pela rede.