Meine Einheit:Null-ID Eigenschaft, wenn deserialize json mit Jackson und Jackson2HalModule of Spring Hateoas
public class User {
private Integer id;
private String mail;
private boolean enabled;
// getters and setters
}
Datei test.json (Antwort von REST-Webservice):
{
"_embedded" : {
"users" : [ {
"id" : 1,
"mail" : "[email protected]",
"enabled" : true,
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/users/1"
}
}
} ]
}
}
Und meine Testklasse:
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());
}
}
Der zweite Test besteht aber nicht der erste. Ich verstehe nicht, weil die ID-Eigenschaft im Benutzer die einzige fehlt (Mail und aktivierten Eigenschaften sind nicht leer) ...
Was muss ich tun, um es zu beheben? Ist es ein Bug in Jackson oder Spring Jackson2HalModule?
Sie können reproduzieren, indem Sie meine Feder-homoas Gabel repository klonen und Einheitstests starten.
gleiche Problem mit 'feder hateoas' und' feder boot', so hatte ich die 'id' etwas anderes – cahen
Sind zu umbenennen Bist du sicher, dass es funktioniert? – Gazeciarz
Es war vor einem Jahr, aber wenn ich mich richtig erinnere, funktioniert es tatsächlich nicht wegen eines Kompilierungsfehlers, denke ich ... Die einzige Lösung, die ich gefunden habe, ist Cahens. Sie müssen Ihre ID-Eigenschaft in etwas anderes umbenennen. – mfalaize