Código de produção · unidade 24 de 27
JSON
Serializar muda a forma — e pode perder informação.
01 / 07Use as setas do teclado ou deslize
Leitura
Stringify, parse seguro, replacer, reviver, NDJSON e os limites de usar JSON como clone.
No backend, esse fundamento aparece quando o código transforma entrada em decisão. O detalhe de linguagem deixa de ser acadêmico no momento em que altera um payload, uma regra de negócio ou a forma como uma falha chega à camada seguinte.
A forma mais útil de estudar é ligar a sintaxe a um contrato observável: o que entra, o que pode mudar, qual resultado sai e qual erro deve continuar o fluxo. É esse raciocínio que os exemplos e exercícios desta unidade procuram treinar.
Código
const parsed = parseJson(body)
if (!parsed.ok) {
return reply.code(400).send({ error: "invalid json" })
}O que fica
- JSON.parse pode lançar e deve ficar na fronteira de entrada.
- JSON.stringify omite valores e transforma tipos como Date.
- Replacer, reviver e NDJSON tornam o contrato explícito.
Prática guiada.Leia, rode, quebre e explique cada exercício.
Prática guiada / unidade 24
Um problema de cada vez.
Leia o contrato, escreva sua tentativa e confira os casos esperados. A resolução de referência permanece visível ao final de cada exercício.
toJsonString(value)
01 / Entenda
Enunciado
serializa value para uma string JSON
compacta (sem espaçamento), usando JSON.stringify.
02 / Implemente
Sua tentativa
Comece pela assinatura e resolva sem olhar a resposta.
function toJsonString(value) {
// Escreva sua solução aqui.
}03 / Preveja
Entrada e saída
Use estes exemplos para entender o contrato antes de programar.
Entrada / chamada
toJsonString({ a: 1, b: "x" })Retorno esperado
'{"a":1,"b":"x"}'Entrada / chamada
toJsonString([1, 2, 3])Retorno esperado
"[1,2,3]"Entrada / chamada
toJsonString(null)Retorno esperado
"null"04 / Teste
Prove que funciona
O teste chama sua função e compara o resultado real com o esperado.
Como utilizar este teste
- 01Implemente a função usando exatamente o nome e os parâmetros do enunciado.
- 02Salve sua implementação em
exercises.js, na mesma pasta do teste. - 03Abra o terminal nessa pasta e execute o comando abaixo.
- 04Se falhar, compare “esperado” com “recebido”; essa diferença mostra o caso que precisa ser corrigido.
node --test --test-name-pattern="toJsonString" exercises.test.jsComportamentos cobertos
- serializa valores simples e objetos sem espaçamento
Ver código completo do teste
test("toJsonString: serializa valores simples e objetos sem espaçamento", () => {
assert.equal(toJsonString({ a: 1, b: "x" }), '{"a":1,"b":"x"}');
assert.equal(toJsonString([1, 2, 3]), "[1,2,3]");
assert.equal(toJsonString(null), "null");
});Ainda travou?
Dicas graduais
Nível 1 — direção, sem código
Para toJsonString/prettyJsonString: JSON.stringify aceita três
parâmetros. O terceiro controla o quê exatamente?
Nível 2 — pista mais direta
toJsonString: JSON.stringify(value).
05 / Compare
Resolução
function toJsonString(value) {
return JSON.stringify(value);
}