Dúvidas com Gson

14 respostas
java
L

Olá pessoal, estou batendo cabeça com um problema aparentemente simples.
Fiz a onfiguração do Gson, fiz o classe etc…
Quando tento executar uma determinada linha não mostra o resultado resperado.

Arquivo Gson:

"atividades_secundarias": [
{
  "text": "Comércio atacadista de água mineral",
  "code": "46.35-4-01"
},
{
  "text": "Comércio atacadista de cerveja, chope e refrigerante",
  "code": "46.35-4-02"
},
{
  "text": "Comércio atacadista de produtos de higiene pessoal",
  "code": "46.46-0-02"
},

Classes java:

private static final long serialVersionUID = 1L;
private String status;
private String message;
private String cnpj;
private String tipo;
private String abertura;
private String nome;
private String fantasia;
private Object atividade_principal;
private String[] atividade_principal_code;
private Object atividades_secundarias;
private String[] atividades_secundarias_code;
private String[] atividades_secundarias_text;
private String natureza_juridica;
private String logradouro;
private String numero;
private String complemento;
private String cep;
private String bairro;
private String municipio;
private String uf;
private String email;
private String telefone;
private String efr;
private String situacao;
private String data_situacao;
private String motivo_situacao;
private String situacao_especial;
private String data_situacao_especial;
private String capital_social;
private Object qsa;
private String[] qsa_nome;
private String[] qsa_qual;
private String[] qsa_pais_origem;    
private String[] qsa_nome_rep_legal; 
private String[] qsa_qual_rep_legal;
private Object extra;
get and set....

    public class TesteCnpj {

public static void main(String[] args) {

	Gson gson = new Gson();
	
	try {
		URL url = new URL("http://www.receitaws.com.br/v1/cnpj/05322299000114");
		// Mostrando a URL no Console
		System.out.println(url);

		InputStream is = url.openConnection().getInputStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));

		//String line = null;
		//while( ( line = reader.readLine() ) != null ) {
		// System.out.println("LINE:" +line);

		Cnpj json = gson.fromJson(reader, Cnpj.class);
		String jsonInString = gson.toJson(json);
		 
		
		
		System.out.println("JASON:" + jsonInString);
		System.out.println("-----------------------");
		
		System.out.println("Status:" + json.getStatus());
		System.out.println("CNPJ:" + json.getCnpj());
		System.out.println("Tipo:" + json.getTipo());
		System.out.println("Abertura:" + json.getAbertura());
		System.out.println("Nome:" + json.getNome());
		System.out.println("Fantasia:" + json.getFantasia());			
		System.out.println("Principal:" + json.getAtividade_principal().toString());
		System.out.println("Code:" + json.getAtividade_principal_code());
		System.out.println("Secundárias:" + json.getAtividades_secundarias());
		System.out.println("Jurídica:" + json.getNatureza_juridica());
		System.out.println("Logradouro:" + json.getLogradouro());
		System.out.println("Numero:" + json.getNumero());
		System.out.println("Complemento:" + json.getComplemento());
		System.out.println("Cep:" + json.getCep());
		System.out.println("Bairro:" + json.getBairro());
		System.out.println("Municipio:" + json.getMunicipio());
		System.out.println("Uf:" + json.getUf());
		System.out.println("Email:" + json.getEmail());
		System.out.println("Telefone:" + json.getTelefone());
		System.out.println("Efr:" + json.getEfr());
		System.out.println("Situação:" + json.getSituacao());
		System.out.println("Motivo Situação:" + json.getMotivo_situacao());
		System.out.println("Capital Social:" + json.getCapital_social());
		System.out.println("Capital Social:" + json.getQsa());

Resultado do out

Capital Social:500000.00 Qsa:[{qual=49-Sócio-Administrador, nome=PAULO JOSE SALINA}, {qual=49-Sócio-Administrador, nome=CESAR SALINA}]

Quero mostrar cada qual em seu devido lugar…sem trocadilhos kkkkkkkkkkkkkkk

14 Respostas

F

Quando você diz “Gson” imagino que queira dizer JSON (Javascript Object Notation).

Agora, existe realmente uma biblioteca chamada “Gson”, que é utilizada para serialização e deserialização de objetos Java no formato JSON.

Exemplo simples com Gson:

Cidade cidade = new Cidade();
cidade.setNome("São Paulo");
cidade.setUF("SP");
        
Gson gson = new Gson();
        
String jsonCidade = gson.toJson(cidade);
Cidade cidadeGson = gson.fromJson(jsonCidade, Cidade.class);
        
System.out.println(jsonCidade);
System.out.println(cidadeGson);

ps: apesar de permitido, procure deixar de lado o uso do ‘_’ no nome de variáveis. Siga a convenção e use o padrão CamelCase. Prefira o uso do underline em constantes (static final).

L

Mas no mu exemplo eu li só não consegui ler isso

atividades_secundarias: [

{

text: Comércio atacadista de água mineral,

code: 46.35-4-01

},

{

text: Comércio atacadista de cerveja, chope e refrigerante,

code: 46.35-4-02

},

{

text: Comércio atacadista de produtos de higiene pessoal,

code: 46.46-0-02

},

porque é mais de uma linha de cada text e code

I

Esta confuso entender oq vc quer, vc quer simplesmente printar o objeto, ou vc ta com problema pra deserializar ?

L

deserializar

V

Apaga todos os prints e substitui essa parte de baixo

por isso

Gson gson = new GsonBuilder().create();
Cnpj cnpj = gson.fromJson(reader, Cnpj .class);
System.out.println(p);
L

Isso eu tb sei , mas e se por exemplo que quiser gravar isso em banco, eu não tenho que pegar cada valor separadamente? ou mesmo se eu for apresentar isso em um input como ficaria

I

Depende de como vai estar modelado o seu banco, depende o que quer apresentar na tela.

L

Então, o que eu quero é assim:
Essa pate do json -
Qsa:[{qual=49-Sócio-Administrador, nome=PAULO JOSE SALINA}, {qual=49-Sócio-Administrador, nome=CESAR SALINA}]
como apresento isso na tela? um nome em um input e o outro em outro input

I

Nem sei como vc ta desenvolvendo essa tela, não tenho a minima idéia.

L

amigo quero pegar essa linha e gravar em uma variável

Qsa:[{qual=49-Sócio-Administrador, nome=PAULO JOSE SALINA}, {qual=49-Sócio-Administrador, nome=CESAR SALINA}]

Exemplo qsa1
String nome1=PAULO JOSE SALINA
String nome2=CESAR SALINA

F

@Lfbdsan creio que não está muito claro a forma como você está fazendo as coisas.

Não tem como você postar o código completo do que você está tentando fazer?

ps: o array, ao ser convertido para um objeto Java, torna-se um LinkedTreeMap se eu não me engano. Todavia, existem formas de interceptar e alterar este comportamento (não que haja necessidade, no seu caso).

L

public class TesteCnpj {

public static void main(String[] args) {

Gson gson = new Gson();

try {
	URL url = new URL("http://www.receitaws.com.br/v1/cnpj/05322299000114");
	// Mostrando a URL no Console
	System.out.println(url);

	InputStream is = url.openConnection().getInputStream();
	BufferedReader reader = new BufferedReader(new InputStreamReader(is));

	//String line = null;
	//while( ( line = reader.readLine() ) != null ) {
	// System.out.println("LINE:" +line);

	Cnpj json = gson.fromJson(reader, Cnpj.class);
	String jsonInString = gson.toJson(json);
	 
	
	
	System.out.println("JASON:" + jsonInString);
	System.out.println("-----------------------");
	
	System.out.println("Status:" + json.getStatus());
	System.out.println("CNPJ:" + json.getCnpj());
	System.out.println("Tipo:" + json.getTipo());
	System.out.println("Abertura:" + json.getAbertura());
	System.out.println("Nome:" + json.getNome());
	System.out.println("Fantasia:" + json.getFantasia());			
	System.out.println("Principal:" + json.getAtividade_principal().toString());
	System.out.println("Code:" + json.getAtividade_principal_code());
	System.out.println("Secundárias:" + json.getAtividades_secundarias());
	System.out.println("Jurídica:" + json.getNatureza_juridica());
	System.out.println("Logradouro:" + json.getLogradouro());
	System.out.println("Numero:" + json.getNumero());
	System.out.println("Complemento:" + json.getComplemento());
	System.out.println("Cep:" + json.getCep());
	System.out.println("Bairro:" + json.getBairro());
	System.out.println("Municipio:" + json.getMunicipio());
	System.out.println("Uf:" + json.getUf());
	System.out.println("Email:" + json.getEmail());
	System.out.println("Telefone:" + json.getTelefone());
	System.out.println("Efr:" + json.getEfr());
	System.out.println("Situação:" + json.getSituacao());
	System.out.println("Motivo Situação:" + json.getMotivo_situacao());
	System.out.println("Capital Social:" + json.getCapital_social());
	System.out.println("Capital Social:" + json.getQsa());
V

Se você quiser inserir isso em um banco é só desserializar no objeto inicial novamente e utilizar os métodos de encapsulamento para pegar os valores.

W

public class CNPJReceitaWS {

private static final long serialVersionUID = 1L;
private String status;
private String message;
private String cnpj;
private String tipo;
private String abertura;
private String nome;
private String fantasia;
private List<Atividade_Principal> atividade_principal;
private List<Atividade_Secundaria> atividades_secundarias;
private String natureza_juridica;
private String logradouro;
private String numero;
private String complemento;
private String cep;
private String bairro;
private String municipio;
private String uf;
private String email;
private String telefone;
private String efr;
private String situacao;
private String data_situacao;
private String motivo_situacao;
private String situacao_especial;
private String data_situacao_especial;
private String capital_social;
private List<Qsa> qsa;
private Object extra;

public CNPJReceitaWS() {
	super();
}

    gets and sets....

    class Atividade_Principal {
	private String code;
	private String text;
	
	public Atividade_Principal() {
		super();
	}
	
	gets and sets....
}

class Atividade_Secundaria {
	private String code;
	private String text;
	
	public Atividade_Secundaria() {
		super();
	}
	
	gets and sets.....
}

class Qsa {
	private String nome;
	private String qual;
	private String pais_origem;
	private String nome_rep_legal;
	private String qual_rep_legal;
	
	public Qsa() {
		super();
	}

	gets and sets.....
}

}

public class TesteReceitaWS {

public static void main(String[] args) {
	
	try {
		
		URL url = new URL("http://www.receitaws.com.br/v1/cnpj/05322299000114");
		
		InputStream is = url.openConnection().getInputStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		
		Gson gson = new Gson();
		CNPJReceitaWS cnpjReceitaWS = gson.fromJson(reader, CNPJReceitaWS.class);
		String jsonInString = gson.toJson(cnpjReceitaWS);
		 
		System.out.println("JSON:" + jsonInString);
		System.out.println("-----------------------");
		
		if(cnpjReceitaWS.getQsa() != null && cnpjReceitaWS.getQsa().size() > 0) {
			for(int i = 0; i < cnpjReceitaWS.getQsa().size(); i++) {
				System.out.println("QSA " + i + " nome: " + cnpjReceitaWS.getQsa().get(i).getNome());
				System.out.println("QSA " + i + " qual: " + cnpjReceitaWS.getQsa().get(i).getQual());
			}
		}
		
		System.out.println(">>>> teste");
		
	}catch (Exception e) {
		e.printStackTrace();
	}
	
}

}

Criado 28 de dezembro de 2016
Ultima resposta 23 de nov. de 2018
Respostas 14
Participantes 5