Pular para o conteúdo principal

Questão de Programação — JSON — CESPE / CEBRASPE 2023

ProgramaçãoJSON
Código
ce154118
Banca
CESPE / CEBRASPE
Órgão
DATAPREV
Ano
2023
Nível
Médio
Cargo
Analista de Tecnologia da Informação - Perfil: Sustentação Tecnológica
Considerando que as bibliotecas necessárias estão corretamente instaladas, julgue o item subsecutivo em relação à linguagem Python e R. O código a seguir, escrito em R, é capaz de realizar a leitura do arquivo dataprev.json localizado no mesmo diretório que o arquivo que contém o código e converte esse arquivo JSON em um objeto R através da função fromJSON(). Q89.png 309×53
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

R: leitura de JSON com fromJSON()

Gabarito: letra E (ERRADO). O código apresentado na imagem não é capaz de realizar a leitura do arquivo dataprev.json e convertê-lo em um objeto R usando a função fromJSON(), pois a função fromJSON() pertence ao pacote jsonlite (ou rjson), que precisa ser carregado antes do uso. Sem a chamada library(jsonlite) (ou require(jsonlite)), o R não reconhece a função e o código falha com erro.

A questão cobra um conhecimento específico da linguagem R: a leitura de arquivos JSON. Diferente do Python, que tem o módulo json embutido, o R não possui uma função nativa para JSON — é necessário instalar e carregar um pacote externo. O pacote mais comum é o jsonlite, que fornece as funções fromJSON() e toJSON(). A função fromJSON() é usada para converter uma string JSON ou um arquivo JSON em um objeto R (como uma lista ou data frame).

Para ler um arquivo JSON, o código típico seria:

library(jsonlite)
dados <- fromJSON("dataprev.json")

A função fromJSON() aceita o caminho do arquivo diretamente como argumento, então a leitura do arquivo e a conversão são feitas em uma única chamada. No entanto, o ponto crucial é que o pacote jsonlite deve ser carregado antes. Se o código da imagem não incluir library(jsonlite), a função fromJSON() não estará disponível no ambiente, e o R retornará um erro como "could not find function \"fromJSON\"".

A banca explora exatamente essa pegadinha: o candidato pode saber que fromJSON() é a função certa para converter JSON em R, mas esquecer que ela não é nativa e precisa de um pacote. A questão afirma que "as bibliotecas necessárias estão corretamente instaladas", mas isso não significa que elas estão carregadas. Instalar um pacote (install.packages()) é diferente de carregá-lo (library()). O código precisa explicitamente carregar o pacote antes de usar qualquer função dele.

Além disso, é importante notar que a função fromJSON() do pacote jsonlite é a mais utilizada, mas também existe o pacote rjson, que tem uma função com o mesmo nome. Em ambos os casos, o carregamento do pacote é obrigatório. A ausência dessa etapa torna o código inválido.

NÃO CAIA NESSA!

A banca troca a instalação pelo carregamento do pacote. O enunciado diz que as bibliotecas estão "instaladas", mas o código não as "carrega" com library(). Instalar (install.packages()) apenas baixa o pacote para o computador; carregar (library()) é o que torna as funções disponíveis na sessão. Sem o library(jsonlite), a função fromJSON() não existe para o interpretador.

  1. 1Instalar (install.packages)
  2. 2Carregar (library)
  3. 3Usar a função
LEVEL · soulevel.com.br

Item — ❌ ERRADO

O item afirma que o código é capaz de realizar a leitura e conversão do arquivo JSON. Isso está incorreto porque, embora a função fromJSON() seja a função correta para essa tarefa, ela não é nativa do R. O código precisa carregar o pacote que a contém (como jsonlite) antes de usá-la. A simples instalação do pacote não é suficiente; é necessário o comando library(jsonlite) (ou require(jsonlite)) no início do script. Sem isso, o R não reconhece a função e o código falha.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/ce154118