Criação de uma Utilitária JSON Reutilizável
No desenvolvimento de software, é uma boa prática escrever código reutilizável. Em vez de repetir a lógica de leitura de arquivos em cada classe que a necessita, podemos criar uma classe utilitária. Essa abordagem, conhecida como "Don't Repeat Yourself" (DRY), torna seu código mais limpo, mais fácil de manter e menos propenso a erros.
Criação da Classe JsonUtils
Vamos criar uma classe utilitária para encapsular a lógica de leitura de um arquivo JSON.
- No WebIDE, crie um novo arquivo chamado
JsonUtils.java dentro do diretório src/main/java/com/labex.
- Adicione o seguinte código:
package com.labex;
import org.json.JSONObject;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class JsonUtils {
/**
* Lê um arquivo JSON de um caminho relativo e o analisa em um JSONObject.
*
* @param filePath O caminho relativo para o arquivo JSON.
* @return Um JSONObject representando o conteúdo do arquivo.
* @throws IOException se ocorrer um erro de I/O ao ler do arquivo.
*/
public static JSONObject readJsonObjectFromFile(String filePath) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(filePath)));
return new JSONObject(content);
}
}
Esta classe contém um único método static, readJsonObjectFromFile. Um método static pertence à própria classe em vez de a uma instância, portanto, você pode chamá-lo diretamente usando o nome da classe (por exemplo, JsonUtils.readJsonObjectFromFile(...)) sem criar um objeto.
Utilizando a Classe Utilitária
Agora, vamos criar uma classe de aplicação principal que utiliza nossa nova utilitária.
- No WebIDE, crie um novo arquivo chamado
Main.java dentro do diretório src/main/java/com/labex.
- Adicione o seguinte código a
Main.java:
package com.labex;
import org.json.JSONObject;
public class Main {
public static void main(String[] args) {
try {
// Usa a classe utilitária para ler o arquivo JSON
JSONObject data = JsonUtils.readJsonObjectFromFile("src/main/resources/data.json");
// Agora podemos trabalhar com o JSONObject como antes
String name = data.getString("name");
String city = data.getJSONObject("address").getString("city");
System.out.println("--- Dados lidos usando JsonUtils ---");
System.out.println("Name: " + name);
System.out.println("City: " + city);
System.out.println("\nJSON lido com sucesso usando JsonUtils.");
} catch (Exception e) {
System.out.println("Ocorreu um erro: " + e.getMessage());
}
}
}
Esta classe Main é muito mais limpa. Ela delega a tarefa de ler e analisar o arquivo para JsonUtils, focando apenas no que fazer com o JSONObject resultante.
Executando a Aplicação Principal
Finalmente, vamos executar nossa classe Main.
- Abra o terminal no WebIDE.
- Execute o seguinte comando:
mvn compile exec:java -Dexec.mainClass="com.labex.Main"
Você verá a seguinte saída:
--- Data read using JsonUtils ---
Name: John Doe
City: Anytown
Successfully read JSON using JsonUtils.
Ao criar uma classe utilitária, você tornou seu código mais modular e reutilizável, que é um princípio chave da engenharia de software eficaz.