【发布时间】:2014-11-28 03:36:04
【问题描述】:
我对 REST 编程很陌生。
下面是我的类,它旨在返回 XML/JSON,但我很难让它返回正确的值。我尝试返回我的POJO 类的响应、JsonArray 和对象,但它不起作用。我查看了几个线程,但无法弄清楚到底是什么问题。
资源类:
public class UserService {
UserDBHandler userDBHandler;
Friend f;
@GET
@Path("users/{userId}/friends")
// @Produces(MediaType.TEXT_PLAIN)
@Produces({ MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public Friend getFriends(@PathParam("userId") String userId) throws SQLException, ClassNotFoundException
{
System.out.println("userId : " +userId);
userDBHandler = new UserDBHandler();
f = new Friend();
ArrayList<String> userList = userDBHandler.fetchUsers(userId);
System.out.println("Array size: "+userList.size());
Iterator<String> iterator = userList.iterator();
while(iterator.hasNext())
{
f.setUri(iterator.next());
System.out.println(f.getUri());
}
//JsonObject object = Json.createObjectBuilder().add("frienduri",f.getUri()).build();
//ResponseBuilder response = Response.ok(f);
//return Json.createArrayBuilder().add(object).build()
//return response.build();
return f;
}
}
POJO 类:
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
@XmlRootElement
public class Friend{
private String friendURI;
private String event;
private String uri;
String getUri() {
return uri;
}
void setUri(String uri) {
this.uri = uri;
}
String getFriendURI() {
return friendURI;
}
void setFriendURI(String friendURI) {
this.friendURI = friendURI;
}
String getEvent() {
return event;
}
void setEvent(String event) {
this.event = event;
}
}
这是我返回 Response 或 Friend 对象时得到的结果:
**<?xml version="1.0" encoding="UTF-8" standalone="yes"?><friend/>**
当返回 JsonArray 时,我得到的是:
[{"frienduri":{"string":"b@b.com","chars":"b@b.com","valueType":"STRING"}}]
我面临的另一个问题是:如果我创建一个构造函数,我会得到以下错误:
一个 MultiException 有 1 个异常。他们是:
1.java.lang.NoSuchMethodException:在repository.resources.UserService class中找不到合适的构造函数。
我的开发环境是 Tomcat 8、JDK 1.8、Eclipse Luna。
我没有使用 Maven 或 web.xml,而是有一个 Application 类。
我正在使用 jaxrs-ri-2.13 和杰克逊罐子:
- jackson-core-asl-1.9.2
- 杰克逊-jaxrs-1.9.2
- jackson-mapper-asl-1.9.2
- jackson-xc-1.9.2
Json 罐子
- javax.json-api-1.0
- javax.json-1.0.4
谢谢
【问题讨论】:
-
这不是一个完整的问题。您为 xml 显示的结果将 not 是您显示的代码的结果。顶部元素是
<friend>,而不是<f>。你不说你想要什么。我不知道您为什么要尝试返回 JSONArray 和 Friend (它们绝对没有关系)。 Maven 也与web.xml/Application完全无关。还要发布您正在使用的 JAX-RS 实现以及您拥有的 jar。你需要的不仅仅是标准的 jars 来支持 JSON。 -
确实是
,我丢失了输出,所以手动编写了它。对于那个很抱歉。我提到 Maven 只是因为之前我收到了一些 MessageWriter 错误,并且一些线程建议在 maven 中添加一些依赖项。对于 messagewriter 错误,我导入了几个 jackson jars。我将编辑问题以列出罐子。
标签: java json rest jersey jax-rs