mia entità:proprietà id Null quando JSON deserialize con Jackson e Jackson2HalModule della primavera hateoas
public class User {
private Integer id;
private String mail;
private boolean enabled;
// getters and setters
}
File test.json (risposta da REST webservice):
{
"_embedded" : {
"users" : [ {
"id" : 1,
"mail" : "[email protected]",
"enabled" : true,
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/users/1"
}
}
} ]
}
}
E la mia classe di test:
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());
}
}
Il secondo test passa ma non il primo. Non capisco perché la proprietà id dell'utente è l'unica mancante (le proprietà mail e abilitate non sono vuote) ...
Cosa devo fare per risolverlo? È un bug in Jackson o Spring Jackson2HalModule?
È possibile riprodurre clonando la forcelladella mia molla di lancio e test di unità di lancio.
stesso problema con 'molla hateoas' e' primavera-boot', così ho dovuto rinominare il 'id' a qualcos'altro – cahen
Are Sei sicuro che funzioni? – Gazeciarz
Era un anno fa, ma se ricordo bene, in realtà non funziona a causa di un errore di compilazione, penso ... L'unica soluzione che ho trovato è quella di Cahen. Devi rinominare la tua proprietà id in qualcos'altro. – mfalaize