我应该如何 return JSON 在 Jersey 2 中回应
How should I return JSON response in Jersey 2
我在尝试 return 响应 Jersey 2 中的 JSON 对象时遇到问题。
以下是代码片段:
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,因为我只想 return a json 对象。
尝试用 POJO 代替 JSON 对象:
是的,POJO 工作正常,但这不是我想要的。我需要 return 带有 Json 对象的响应,它将由我的 Java 脚本代码解析。
从 JSONObject
获取 String
并在 Response
中设置 String
。如下所示 -
object = new JSONObject();
object.put("Name", "Bryan");
object.put("Age", "27");
response = Response.status(Status.OK).entity(object.toString()).build();
我在尝试 return 响应 Jersey 2 中的 JSON 对象时遇到问题。
以下是代码片段:
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,因为我只想 return a json 对象。
尝试用 POJO 代替 JSON 对象: 是的,POJO 工作正常,但这不是我想要的。我需要 return 带有 Json 对象的响应,它将由我的 Java 脚本代码解析。
从 JSONObject
获取 String
并在 Response
中设置 String
。如下所示 -
object = new JSONObject();
object.put("Name", "Bryan");
object.put("Age", "27");
response = Response.status(Status.OK).entity(object.toString()).build();