No contexto do Python 3.9, analise o trecho a seguir. import json s1 = "{\"nome\": \"Ciro\", \"cep\": \"99999-999\"}" s2 = "[\"um\", \"dois\"]" s3 = "true" s4 = "null" print(json.loads(s1)) print(json.loads(s2)) print(json.loads(s3)) print(json.loads(s4)) Dado que “\” funciona como escape character, o resultado exibido pela execução desse trecho é:
- A){'nome': 'Ciro', 'cep': '99999-999'} ['um', 'dois'] True None
Certa: mostra corretamente a conversão de objeto para dict, array para list, true para True e null para None.
- B){'nome': 'Ciro', 'cep': '99999-999'} ('um', 'dois') true Null
Errada: em Python, o array JSON vira lista e os literais JSON true e null não aparecem como texto puro nem como Null.
- C){nome: 'Ciro', cep: '99999-999'} ('um', 'dois') true None
Errada: chaves sem aspas não são a representação correta do dict impresso, e true/null continuam sem a conversão adequada.
- D){nome: 'Ciro', cep: '99999-999'} ['um', 'dois'] True None
Errada: objeto JSON vira dict com aspas nas chaves, não um formato sem aspas, e o restante também está inconsistente.
- E){nome: 'Ciro', cep: '99999-999'} ['um', 'dois'] true Null
Errada: repete o erro de formatar o objeto sem aspas nas chaves e ainda usa Null, que não é o valor exibido em Python.
Gabarito: A
Aqui a ideia central é lembrar que json.loads() pega uma string em formato JSON e converte para o tipo correspondente em Python. Ou seja: um objeto JSON vira dict, um array JSON vira list, o valor true vira True e null vira None. Em Python, os nomes mudam mesmo: JSON usa true/false/null, enquanto Python usa True/False/None. Pequeno detalhe, grande pegadinha de prova. No trecho, s1 representa um objeto JSON com as chaves "nome" e "cep", então o print mostra um dicionário Python. s2 representa um array JSON, então o resultado é uma lista com "um" e "dois". Já s3 contém true, que no JSON é convertido para o booleano True do Python. Por fim, s4 contém null, que vira None. Perceba que o caractere de escape \ serve para permitir aspas duplas dentro da string Python, mas isso não altera a regra do JSON em si. Ele só ajuda a montar corretamente o texto que será interpretado por json.loads(). É por isso que a alternativa A está certa: ela apresenta exatamente as conversões esperadas entre JSON e Python. Em concurso, a banca gosta de cobrar essa troca de nomenclatura entre os dois mundos. Se você memorizar a equivalência JSON -> Python, mata a questão sem drama: objeto -> dict, array -> list, true -> True, null -> None.