我使用Jersey来实现REST apis。除了所有端点之外,我想创建一个列出所有端点及其用法的about页面。
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response displayInfo() {
JSONObject json = createInfoJson();
return Response.ok(json).build();
}
/////////////////////////////////////////
public static JSONObject createInfoJson() {
JSONArray ja = new JSONArray();
JSONObject jo1 = new JSONObject();
jo1.put("baseurl", "/tests/");
jo1.put("description", "Basic Information page");
jo1.put("example", "/tests/");
ja.put(jo1);
JSONObject jo2 = new JSONObject();
jo2.put("baseurl", "/tests/sendmsg");
jo2.put("description", "Run Kafka Test");
jo2.put("example", "/tests/sendmsg?count=100");
ja.put(jo2);
ja.put(jo2);
JSONObject json = new JSONObject();
json.put("name", "Kafka Messaging Test");
json.put("endpoints", ja);
return json;
}
当我在浏览器中点击about页面时,出现以下错误:
No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
从Jersey返回JSONObject对象的正确方法是什么?
答案 0 :(得分:3)
您正在尝试将JSONObject序列化为JSON,它不会以这种方式工作(错误解释了原因)。但是你至少有两个选择:
将json
序列化为String:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response displayInfo() {
JSONObject json = createInfoJson();
return Response.ok(json.toString()).build();
}
为您的回复创建模型/ POJO,并使用它代替JSONObject。