我在使用Jackson映射Javascript发布的哈希表(标记)数组时遇到问题。
这是控制器@RequestBody接收到的数据(以正确的json requestheader发送):
[{name=tag1}, {name=tag2}, {name=tag3}]
这是控制器:
@RequestMapping(value = "purchases/{purchaseId}/tags", method = RequestMethod.POST, params = "manyTags")
@ResponseStatus(HttpStatus.CREATED)
public void createAll(@PathVariable("purchaseId") final Long purchaseId, @RequestBody final List<Tag> entities)
{
Purchase purchase = purchaseService.getById(purchaseId);
Set<Tag> tags = purchase.getTags();
purchaseService.updatePurchase(purchase);
}
当我调试并查看“实体”值时,它显示为通用对象的ArrayList,而不是我期望的“标签”类型的对象列表。
我如何让杰克逊将传递的对象数组映射到“标签”类型的对象列表?
谢谢
听起来好像Spring出于某种原因没有传递完整的类型信息,而是传递了一个类型擦除的版本,好像声明是类似的List<?> tag
。我不知道如何解决才能完全解决这个问题(可能需要Spring集成团队的帮助),但是一种解决方法是定义自己的类型,例如:
static class TagList extends ArrayList<Tag> { }
并改用它。这将通过超类型声明保留泛型参数化,因此,即使Spring仅通过TagList.class
,也可以通过Jackson找出该Tag
参数。
POJO类: 控制器: JSON请求: 问题: 当我处理请求时,我收到一个空的TransactionDto对象。 System.out.println(transactionDto) TransactionDto(id=null,userName=null,apiKey=null,amount=0,accountNumber=null,expirationDate=null,cscCode=nul
问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例
我编写了货币转换器程序,从,映射对象并创建选定速率的简单数据集。我的程序运行得很好,直到我停止使用解析和映射对象,并用替换它。它可以很好地读取基础货币和日期,但不能读取<代码>汇率 子对象。为什么? 我的代码:类别: 类: 必须使用映射对象的类: 我试图解析和映射的示例JSON数据 我正在使用这个对象来准备对象,该对象具有一个简单的
下面是我的DTO。 源DTO 目标DTO
给定: 我想把所有的车都标出来。将轮胎分为单独的轮胎板。我知道我可以做一个
问题内容: 使用以下代码,我已将列表转换为json,但格式如下: 但我想将其转换为: 以下是我的弹簧控制器: 问题答案: 更改从返回结果给放: 如此; 更新 您可以将结果作为字符串返回,您将获得所需的内容: 返回的字符串是json格式。