Dúvidas com Gson

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

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).

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

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

deserializar

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);

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

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

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

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

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

@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).

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());

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.

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();
	}
	
}

}