Web Service REST retornar JSON

Estou fazendo um exemplo de Web Service REST, no entando não consigo retornar JSON, apenas consigo retornar XML e Text.
Segue abaixo as configurações do meu projeto:

[code]import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.ProduceMime;
import javax.ws.rs.core.MediaType;

@Path("/pedido/{id}")
public class PedidoResource {

@GET
@ProduceMime(value = MediaType.APPLICATION_JSON)
public Pedido getPedidoById(@PathParam("id") int id){
	PedidoDAO pdao = new PedidoDAO();
	return pdao.getPedidoById(id);
}

}[/code]

[code]import java.util.ArrayList;
import java.util.List;

//Não faz nenhuma consulta em banco, apenas preenche o bean e retorna… (aproveitei uma classe que ja havia feito…)
public class PedidoDAO {

public Pedido getPedidoById(int id){
	Pedido p = new Pedido();
	List<String> lista = new ArrayList<String>();
	lista.add("1");
	lista.add("2");
	lista.add("3");
	
	p.setDescricao("PEDIDO TESTE");
	p.setId(id);
	p.setTotal(1000);
	p.add(lista);		
	return p;
}

}[/code]

Bean Pedido.

[code]@XmlRootElement
public class Pedido {

private int id;
private String descricao;
private double total;
private List<String> lista;

public Pedido() {
}

    //Getters & Setters

[/code]

Minhas classes ficaram desta maneira… abaixo segue a configuração feita no WEB.XML:

<servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>net.tmro.demo.json;br.com.rest</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>

Agora Lista de Jars do projeto:

activation.jar
ant.jar
asm-3.1.jar
comresrcgen.jar
grizzly-servlet-webserver-1.7.3.2.jar
http.jar
jaxb-api.jar
jaxb-impl.jar
jaxb-xjc.jar
jdom-1.0.jar
jersey-core-1.1.5.jar
jersey-server-1.1.5.jar
jettison-1.0-RC1.jar
json-lib-2.2.3-jdk15.jar
jsp-api-2.0-20040521.jar
jsr311-api.jar
junit-3.8.1.jar
localizer.jar
mail.jar
persistence-api-1.0.jar
rome-0.9.jar
servlet.jar
wadl2java.jar

Enfim, ta ai minhas configurações… meu problema é nao retornar JSON… se alguem tiver alguma ideia diz ae…

[]'s

Brother,
o problema é q vc tá sem o jar responsável por gerar a saída no formato JSON.
Se estiver usando o Jersey (http://jersey.java.net/) tem q baixar o jersey-json.jar (http://download.java.net/maven/2/com/sun/jersey/jersey-json/1.7/jersey-json-1.7.jar).
No caso de outra implementação, verifique o jar correspondente.

Espero ter ajudado.
Abraço!

consegiu terminar ?

tá faltando usar @Produces

http://stackoverflow.com/questions/11881246/returning-json-object-from-rest-web-service-with-complex-objects

Caso queira, existe o XStream que é ótimo pra fazer essas paradas de XML e JSON, tenho me dado muito aqui nas minhas aplicações:

http://xstream.codehaus.org

Exemplo do próprio site:

Serializando

package com.thoughtworks.xstream.json.test;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;

public class WriteTest {

	public static void main(String[] args) {

        Product product = new Product("Banana", "123", 23.00);
        XStream xstream = new XStream(new JettisonMappedXmlDriver());
        xstream.setMode(XStream.NO_REFERENCES);
        xstream.alias("product", Product.class);

        System.out.println(xstream.toXML(product));		
		
	}
}

Saída

{"product":{"name":"Banana","id":123,"price":23.0}}

Deserializando

[code]package com.thoughtworks.xstream.json.test;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;

public class ReadTest {

public static void main(String[] args) {
	String json = "{\"product\":{\"name\":\"Banana\",\"id\":123"
	    + ",\"price\":23.0}}";
	    
	XStream xstream = new XStream(new JettisonMappedXmlDriver());
	xstream.alias("product", Product.class);
	Product product = (Product)xstream.fromXML(json);
	System.out.println(product.getName());
}

}[/code]

Saída

Banana

Obrigado, gostei da ideia…
estou seguindo este artigo : [url]v[/urlhttp://www.myeclipseide.com/documentation/quickstarts/webservices_rest/[url]
http://www.myeclipseide.com/documentation/quickstarts/webservices_rest/