Response JSon

Olá pessoal, estou com um problema, sempre que trabalhei com request/response em JSON a minha response só precisava trazer strings, dessa forma eu utilizava um

response.getOutputStream().print e saia feliz…

Me foi solicitado então para que fizesse o request/responde do json porém dessa vez com que a resposta retornasse duas Strings e duas Collections!
Simplesmente me perdi…

DataBaseCavisitAccess acessoDb = null;
	Collection cltLocalidade = null;
	Collection cltEntradaDiaria = null;
		
	String retornoFunction = "";
	String localidadeSelecionada = "0";
	String codBarra = "";
			
	int idLocalidade = 0;
			
	try {				
		acessoDb = new DataBaseCavisitAccess("");
		
		idLocalidade = Integer.parseInt(request.getParameter("cmbLocalidade"));
		codBarra = request.getParameter("txtCodigo");

		retornoFunction = ControleAcessoBusiness.validaIngresso(codBarra, idLocalidade, acessoDb);
	
		//retorno da function - I, A, J, N
		request.setAttribute("retornoFunction", retornoFunction);
		acessoDb.commit();
				
		//lista de localidades - carrega o combo
		cltLocalidade = LocalidadeBusiness.list(acessoDb);
		request.setAttribute("cltLocalidade", cltLocalidade);
				
		//lista de entrada diaria no museu
		cltEntradaDiaria = ControleAcessoBusiness.list(idLocalidade, acessoDb);
		request.setAttribute("cltEntradaDiaria", cltEntradaDiaria);
													
		//retorna a localidade selecionada 
		localidadeSelecionada = String.valueOf(idLocalidade);
		request.setAttribute("localidadeSelecionada", localidadeSelecionada);
				
getServletContext().getRequestDispatcher("/web-content/jsp/frmControleAcesso.jsp").forward(request,response);

dese já agradeco qualquer ajuda…

Vc sabe o que é json?
Viu como funciona?
Cada coleção vai ter que ser retornada como um array (o json vai ser uma string).
Não adianta vc tentar mandar o objeto inteiro, vc tem que formata-lo!
Vc pode usar alguma biblioteca p/ isso, ou fazer na mão. Uma opção de biblioteca é a Jettison.
P/ entender o que é json, dê uma olhada aqui: www.json.org

Um exemplo de json com uma “coleção”:

{ "nome": "João", "sobrenome": "Silva", "dependentes": [{ "nome": "Filho 1", "sobrenome": "Silva", "dataNascimento": "02/02/1990" }, { "nome": "Filho 2", "sobrenome": "Silva", "dataNascimento": "05/10/1995" }] }

Esse JSON corresponde à seguinte estrutura orientada a objetos:

[code]
public class Pessoa {
private String nome;
private String sobrenome;
private List dependentes;
// gets e sets…
}

public class Dependente {
private String nome;
private String sobrenome;
private String dataNascimento;
// gets e sets…
}

// código que instancia uma série de objetos (corresponde ao JSON acima)
Pessoa p = new Pessoa();
p.setNome( “João” );
p.setSobrenome( “Silva” );

Dependente d1 = new Dependente();
d1.setNome( “Filho 1” );
d1.setSobrenome( “Silva” );
d1.setDataNascimento( “02/02/1990” );

Dependente d2 = new Dependente();
d2.setNome( “Filho 2” );
d2.setSobrenome( “Silva” );
d2.setDataNascimento( “05/10/1995” );

List dependentes = new ArrayList();
dependentes.add( d1 );
dependentes.add( d2 );

p.setDependentes( dependentes );[/code]

Note que o atributo “dependentes” no json é um array (olhe os colchetes) de objetos do tipo dependente. No json vc não especifica o tipo de objeto. Um objeto é representado pelo abre e fecha chaves ( {} ).

[]´s

Dê uma olhada neste link http://mauriziostorani.wordpress.com/2008/07/22/json-javascript-object-notation-concepts-methods-examples-and-security-threats/

Tem links para 3 diferentes utilitários para converter objetos Java em formato Json

abraços

Talvez resolva seu problema!
http://jgates.sourceforge.net

Bom, ao invés de JSon e submit paralelo e dinâmico eu arranjei uma solução com um IFrame ao fundo digamos realizando o submit no lugar da página, ficou muito bom…
Agradeço ae ao pessoal, serviu muito pra esclarecer diversas dúvidas sobre a tecnologia… abração!