日期:2014-05-17  浏览次数:20616 次

问下关于REST的JSON格式问题~~在线等~~
要求很简单~~~我用REST传入一个string的字符串,他返回一个JSON格式~以下是我代码问下怎么解决?

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;

import org.codehaus.jettison.json.JSONObject;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
@Path("/helloWorld")
public class HelloWorld {

@GET
// @Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Object helloWorld(@QueryParam("from")String fromValue, @QueryParam("avc")String avc){
return fromValue;
}
}


他最后返回的还是一个string并没有转换成json求问题所在。(已经使用@Produces(MediaType.APPLICATION_JSON)还要注意什么地方?)

------解决方案--------------------
1.没有亲测,不过怀疑,你直接Return String类型这种方式,应该不行,你可以建一个简单的POJO
如:
@Entity
@XmlRootElement(name = "Project")
@XmlAccessorType(XmlAccessType.FIELD)
public class Project extends VersionedEntity {

private static final long serialVersionUID = 1L;

/** ID */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@FormParam("id")
@XmlAttribute
private Long id;

/** 名称 */
@FormParam("name")
@XmlAttribute
private String name;

/** 投资方/建设单位 */
@FormParam("investor")
@XmlAttribute
private String investor;
.....


Servlet:

@Controller
@Path("project")
public class ProjectController{

private static final Logger LOGGER = LoggerFactory.getLogger(ProjectController.class);

@Resource(name = "projectServiceImpl")
private ProjectService projectService;

@GET
@Path("list")
public ModelAndView toProject(){
return new ModelAndView("/static/project/list");
}

@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})