Sobre a gramática da linguagem de intercâmbio de dados JSON (JavaScript Object Notation), assinale a afirmativa correta.
- A)Um objeto é um conjunto ordenado de pares nome-valor.
Errada, porque no JSON um objeto não é definido como conjunto ordenado de pares nome-valor; a noção de ordenação não faz parte da definição da gramática.
- B)Um valor numérico pode ser declarado em base decimal, octal ou hexadecimal.
Errada, porque JSON admite número em formato decimal, mas não permite notação octal nem hexadecimal.
- C)A ausência intencional de qualquer valor de objeto é representada com a palavra reservada undefined.
Errada, porque JSON não usa undefined para ausência de valor; o valor padrão para isso é null.
- D)Uma string é uma sequência de zero ou mais caracteres unicode envolto por aspas duplas.
Certa, porque a especificação do JSON define string como uma sequência de zero ou mais caracteres Unicode entre aspas duplas.
- E)Os espaços em branco são proibidos entre qualquer par de tokens.
Errada, porque o JSON permite espaços em branco entre tokens, desde que respeite a sintaxe.
Gabarito: D
JSON é uma linguagem de troca de dados bem enxuta: ela trabalha com objetos, arrays, strings, números, booleanos e null. O ponto mais cobrado é que o JSON tem regras próprias de escrita, e não aceita tudo o que existe em JavaScript. Por isso, muita armadilha de prova mistura conceitos de programação com a gramática do JSON. No JSON, um objeto é um conjunto de pares nome-valor, mas esses pares não são considerados ordenados pela especificação. Já os números aparecem em formato decimal, sem octal, hexadecimal ou outras notações de linguagem de programação. Também não existe undefined no JSON, porque ausência de valor é representada por null. A alternativa correta é a que diz que uma string é uma sequência de zero ou mais caracteres Unicode envolta por aspas duplas. Essa definição está alinhada com a gramática do JSON descrita na RFC 8259, que é a referência normativa do padrão. Então, se aparecer aspas simples, já desconfie: em JSON, a festa é das aspas duplas. Outra curiosidade importante: o JSON permite espaços em branco entre tokens, então não é uma escrita totalmente "apertada". Em prova, a banca costuma cobrar justamente essas diferenças entre JSON e JavaScript, porque elas parecem primas próximas, mas não são a mesma coisa.