Como serializar e deserializar um List?

1 resposta
Valter_Henrique

Pessoal,
nossa como é bom falar em português (estou o dia todo procurando ajuda em sites em inglês,rsrs).

Eu estou criando uma servlet no Google App Engine que tem por função fazer uma consulta e retorna uma List<Video>, isso ela faz tranquilo, então eu preciso serializar essa List<Video> e retornar ela para o meu cliente, mas eu não estou conseguindo deserializar ela.
Eu já tentei tudo que é JSON,Gson, JackSon mas só dá erro e eu não entendo muito tbm para ajudar, então peço a ajuda de vocês galera.

Bem este é a minha classe Video no meu Google App Engine

package legiontube;

import java.util.Date;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Video {
	
    @PrimaryKey
    private String id;
    
    @Persistent
    private String titulo;
    
    @Persistent
    private String descricao;
    
    @Persistent
    private Date date;

	/**
	 * @param id
	 * @param titulo
	 * @param descricao
	 * @param date
	 */
    
    public Video(){};
    
	public Video(String id, String titulo, String descricao, Date date) {
		super();
		this.id = id;
		this.titulo = titulo;
		this.descricao = descricao;
		this.date = date;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}
    
}

Esta é a classe Video no meu cliente :

package classes;

import java.util.Date;

public class Video {
	private String id;
	private String titulo;
	private String descricao;
	private Date date;
	
	/**
	 * @param id
	 * @param titulo
	 * @param descricao
	 * @param date
	 */
	public Video(String id, String titulo, String descricao, Date date) {
		//super();
		this.id = id;
		this.titulo = titulo;
		this.descricao = descricao;
		this.date = date;
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}

	
	
}

Obrigado GUJ.

1 Resposta

Valter_Henrique

Oi pessoal, consegui, rs.
Um americano me ajudou :

Utilizando o gson, ficaria assim :

List&lt;Video&gt; videos = gson.fromJson(json, new TypeToken&lt;List&gt;&lt;Video&gt;&gt;(){}.getType());

Não esquecendo de criar um construtor sem argumento na classe que será deserializada, no meu caso a classe video:

public Video (){}

Ok ?

Valeu GUJ, espero que ajude,rs.

Criado 30 de novembro de 2010
Ultima resposta 1 de dez. de 2010
Respostas 1
Participantes 1