java - 如何创建返回 xml 和 json 的 Web 服务函数?

标签 java jpa jersey eclipselink jax-rs

我创建了一个网络服务功能:

@GET
@Path("getusers/")
@Produces({"application/xml","application/json"})
public Object getUsers()
{
    String distanceQuery="SELECT UGL.user_id,UP.fname,UGL.mlatitude,UGL.mlogitude,UGL.mlogitude from user_gps_location UGL,user_profile UP where UGL.user_id=UP.user_id";
    Query queryResult=em.createNativeQuery(distanceQuery);

    userList=queryResult.getResultList();
    return userList;
}

该函数返回结果列表: 如果我在选择 application/json 选项时使用浏览器对其进行测试,则效果很好:

结果:

[[1,"Ankit",37.334542,-121.890821,-121.890821],
[1,"Ankit",37.337749,-121.886702,-121.886702],
[1,"Ankit",37.336453,-121.884985,-121.884985],
[1,"Ankit",37.336453,-121.884985,-121.884985],
[1,"Ankit",37.336453,-121.884985,-121.884985],
[1,"Ankit",32.727798,-117.15683,-117.15683],
[1,"Ankit",37.334541666666674,-121.89081999999999,-121.89081999999999],
[1,"Ankit",37.33774833333334,-121.88670166666667,-121.88670166666667],
[1,"Ankit",37.33774833333334,-121.88670166666667,-121.88670166666667],
[1,"Ankit",37.334541666666674,-121.89081999999999,-121.89081999999999],
[1,"Ankit",37.334541666666674,-121.89081999999999,-121.89081999999999],
[1,"Ankit",37.33774833333334,-121.88670166666667,-121.88670166666667],
[2,"Niharika",37.334541666666674,-121.88670166666667,-121.88670166666667],
[2,"Niharika",37.334541666666674,-121.88670166666667,-121.88670166666667]]

但是当我选择“application/xml”时,它给了我一个错误:

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.Vector, and Java type class java.util.Vector, and MIME media type application/xml was not found

任何人都可以帮助我并告诉我出了什么问题吗?

另外,我如何返回如下所示的格式良好的结果?

<id>1</id>
<name>Ankit</name>

我知道我需要使用一个类,但由于这是一个 native 查询,我使用两个表并返回一个结果列表,我不知道该怎么做。

最佳答案

尝试改变

public Object getUsers() 

public List<MyObjectType> getUsers()

匹配类型 userList。

此外,请确保域类上存在 @XMLRootElement 注释

关于java - 如何创建返回 xml 和 json 的 Web 服务函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769031/

相关文章:

java - 事务和分离对象 JPA

java - 未找到媒体类型 = 应用程序/json 的 MessageBodyWriter

java - 直接自引用导致循环

java - 如何让 Firebase 与 Java 后端一起工作

java - Java InputStream函数 `available()`如何用C语言实现?

java - 使用 @EntityManager 保存 @Entity 不起作用

java - 测试 Jersey REST 资源(无效返回响应)

java - spring data rest 存储库中的更新方法

c# - 可以使用break进行外循环吗?

java - 加载具有不存在子实体的实体时 JPA 预期的行为