要求很简单~~~我用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.   

    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;
    }
    }你自己测一下
      

  2.   


    用你的说法我写了另一个~~但是会报500错以下是代码
    求指点:
    TEST类package test;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;@Path("project")
    public class Test {
    @GET
    // @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public User helloWorld(@QueryParam("from")int fromValue, @QueryParam("avc")String avc){

    User user = new User();

    user.setId(fromValue);
    user.setName(avc);
    return user;
    }
    }User类package test;public class User {
    private int id;
    private String name;

    public User() {
    id = 0;
    name = null;

    } public int getId() {
    return id;
    } public void setId(int id) {
    this.id = id;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    }


    }
      

  3.   

    你User类上没有JAXB注解呀,你去了解一下