我在尝试使用Jersey 2中的JSON对象返回Response时遇到问题。
以下是代码段:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.codehaus.jettison.json.JSONObject;
@Path("/message")
public class HelloWorld {
@Path("/getJson")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getJSON() {
JSONObject object = null;
Response response = null;
try {
object = new JSONObject();
object.put("Name", "Bryan");
object.put("Age", "27");
response = Response.status(Status.OK).entity(object).build();
} catch (Exception e) {
System.out.println("error=" + e.getMessage());
}
return response;
}
}
我得到以下异常:
No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
相关帖子建议我尝试以下方法。
使用ObjectMapper并设置属性 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false); :我不需要在这种情况下使用ObjectMapper,因为我只想返回一个json对象。
尝试POJO而不是JSON对象: 是的POJO工作正常,但这不是我想要的。我需要返回带有Json对象的Response,它将由我的Java脚本代码解析。
答案 0 :(得分:6)
从String
获取JSONObject
并在String
中设置Response
。像下面的东西 -
object = new JSONObject();
object.put("Name", "Bryan");
object.put("Age", "27");
response = Response.status(Status.OK).entity(object.toString()).build();