首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

问下关于REST的JSON格式有关问题~

2013-07-20 
问下关于REST的JSON格式问题~~在线等~~要求很简单~~~我用REST传入一个string的字符串,他返回一个JSON格式~

问下关于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}) 


public Project get(@PathParam("id") Long id){
Project project = projectService.find(id);
if(null != project){
return project;
}else{
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
}

@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
public Project add(@Form Project project){
    projectService.save(project);
    return project;
}

@PUT
@Path("{id}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response update(@PathParam("id") Long id, @Form Project project) {
if(id.equals(project.getId())){
projectService.update(project);
}
    return Response.ok().build();
}

@DELETE
@Path("{id}")
public Response delete(@PathParam("id") Long id) {
projectService.delete(id);
return Response.ok().build();
}

@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public Pagination<Project> getPageData(@MatrixParam("pageNo") @DefaultValue("0") int pageNo,
@MatrixParam("pageSize") @DefaultValue("0") int pageSize) {
Pagination<Project> page = projectService.getPageData(pageNo, pageSize);
return page;
}
}



你自己测一下

热点排行