我的实体:
public class User {
private Integer id;
private String mail;
private boolean enabled;
// getters and setters
}
文件 test.json(来自 REST 网络服务的响应):
{
"_embedded" : {
"users" : [ {
"id" : 1,
"mail" : "admin@admin.com",
"enabled" : true,
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/users/1"
}
}
} ]
}
}
我的测试课:
public class TestJson {
private InputStream is;
private ObjectMapper mapper;
@Before
public void before() {
mapper = new ObjectMapper();
mapper.registerModule(new Jackson2HalModule());
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
is = TestJson.class.getResourceAsStream("/test.json");
}
@After
public void after() throws IOException {
is.close();
}
@Test
public void test() throws IOException {
PagedResources<Resource<User>> paged = mapper.readValue(is, new TypeReference<PagedResources<Resource<User>>>() {});
Assert.assertNotNull(paged.getContent().iterator().next().getContent().getId());
}
@Test
public void testResource() throws IOException {
PagedResources<User> paged = mapper.readValue(is, new TypeReference<PagedResources<User>>() {});
Assert.assertNotNull(paged.getContent().iterator().next().getId());
}
}
第二次测试通过,但第一次没有通过。我不明白,因为用户中的 id 属性是唯一缺少的(邮件和启用的属性不为空)...
我该怎么做才能修复它?这是 Jackson 或 Spring Jackson2HalModule 中的错误吗?
您可以通过克隆我的 spring-hateoas fork存储库并启动单元测试来重现。