Estou com um pequeno problema no meu codigo, eu acabei fazendo um projeto como se fosse um "endereçador"(Claro que precisei rever o video do projeto final e precisei copiar algumas coisas kkkk) , onde o usuario poderia colocar o nome da pessoa e telefone, segue abaixo:
public class Usuario extends FormularioEndereco{
private String nome;
private String telefone;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
public abstract class FormularioEndereco {
private String complemento;
private String cep;
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getCep(){
return cep;
}
public void setCep(String cep){
this.cep = cep;
}
}
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
var dados = new Scanner(System.in);
var usuario = new Usuario();
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.create();
System.out.println("Digite seu nome.");
System.out.print("Nome: ");
usuario.setNome(dados.next());
System.out.println();
System.out.println("Digite seu telefone:");
System.out.print("Telefone: ");
usuario.setTelefone(dados.next());
System.out.println();
System.out.println("Digite seu CEP.");
System.out.println("ATENÇÃO! Insira apenas numero!");
System.out.print("CEP: ");
usuario.setCep(dados.next());
String endereco = "http://viacep.com.br/ws/" + usuario.getCep() + "/json";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endereco))
.build();
HttpResponse<String> response = null;
try {
response = client
.send(request, HttpResponse.BodyHandlers.ofString());
response.body();
System.out.println();
System.out.println("nome: ''"+ usuario.getNome()+"''" );
System.out.println("telefone: ''"+ usuario.getTelefone()+"''" );
System.out.println(response.body());
FileWriter escrita = new FileWriter(usuario.getNome()+".json");
escrita.write(gson.toJson(response.body()));
escrita.close();
} catch (IOException | InterruptedException e) {
throw new RuntimeException("Não foi possivel verificar CEP!");
}
}
}
Quando gera o json ele fica dessa forma as informações todas em uma linha:
"{\n \"cep\": \"01001-000\",\n \"logradouro\": \"Praça da Sé\",\n \"complemento\": \"lado ímpar\",\n \"bairro\": \"Sé\",\n \"localidade\": \"São Paulo\",\n \"uf\": \"SP\",\n \"ibge\": \"3550308\",\n \"gia\": \"1004\",\n \"ddd\": \"11\",\n \"siafi\": \"7107\"\n}"
Gostaria de saber como posso deixar de uma forma que cada informação fique em uma linha, e gostaria de saber como posso esta melhorando nesse codigo.