我有一个JAX-RS资源,它的参数如JSON字符串所示:
http://some.test/aresource?query={"paramA":"value1", "paramB":"value2"}
在这里使用JSON的原因是,在实际用例中查询对象可能非常复杂。
我想将JSON字符串转换为Java对象,在示例中为dto:
@GET
@Produces("text/plain")
public String getIt(@QueryParam("query") DataTransferObject dto ) {
...
}
JAX-RS是否支持从作为查询参数传递的JSON到Java对象的这种转换?
是的,您可以执行此操作,但是您需要自己编写转换代码。幸运的是,这很容易,您只需要编写一个具有公共String
构造函数的类即可进行转换。例如:
public class JSONParam {
private DataTransferObject dto;
public JSONParam(String json) throws WebApplicationException {
try {
// convert json string DataTransferObject and set dto
}
catch (JSONException e) {
throw new WebApplicationException(Response.status(Status.BAD_REQUEST)
.entity("Couldn't parse JSON string: " + e.getMessage())
.build());
}
}
public DataTransferObject getDTO() {
return dto;
}
}
然后,您可以使用:
@GET
@Produces("text/plain")
public String getIt(@QueryParam("query") JSONParam json) {
DataTransferObject dto = json.getDTO();
...
}
我有下一个pojo: 和rs服务: 当我尝试访问资源时,我会得到一个循环 如何正确转换包含对自身引用的类?
我有一个用例,我需要限制可以作为查询参数传递的值。 在上面的例子中,我想限制可以通过API传递给的查询参数的值。 是否有任何现有的CXF注释,我可以用来限制参数上的值?我没有找到任何,所以我尝试了以下解决方案。 我的方法: 修改后的界面如下所示。 我写了一个CXF拦截器来拦截应用编程接口的调用。我使用反射来获取params的句柄。但是我面临的问题是拦截器查看了Fooimpl.get的Foo细节方法
我正在编写一个util函数,以根据传递给我的任何HQL获取总记录计数,而不加载所有数据。传入的HQL可能非常复杂,有大量的选择、联接、条件、分组和排序。为此,我想用中选择计数(*)来包装查询。我发现,这在HQL中是不可能的,因为Hibernate不允许在FROM元素中进行子查询。现在,我正在尝试将这个随机的HQL查询转换为一个可执行的SQL语句,而不内联参数值,该查询可能具有一些命名参数(其中一些
问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答
问题内容: 我希望我的JSON看起来像这样: 到目前为止的代码: 和 我只是缺少如何使用Jackson将Java对象转换为JSON的部分: 我的问题是:我的课程正确吗?我必须调用哪个实例,以及如何实现此JSON输出? 问题答案: 要使用Jackson 转换JSON:
问题内容: 使用Marshaller将Java对象转换为XML相当容易。但是我需要单独使用marshaller将Java对象转换为JSON。我知道像使用gson或Xstream这样的东西很好,但是我需要使用Marshaller。如何实现呢? 提前致谢。 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB(JSR-222) 专家组的成员, 如果将MOX