2017-02-22 1 views
1

J'ai une chaîne JSON appelé primarySkillStr:Comment faire pour convertir la chaîne à la liste dans java8 en utilisant ObjectMapper?

[ 
    { 
    "id": 3, 
    "roleIds": [ 
     2 
    ], 
    "rating": 2 
    } 

] 

J'essaie de la carte à un objet comme suit:

primarySkillList = mapper.readValue(primarySkillStr, 
    new TypeReference<List<PrimarySkillDTO>>() {}); 

Mais quand Iam la conversion à un List alors la liste roleIds est null. Est-ce que je fais quelque chose de mal ou y a-t-il un autre moyen?

Ceci est mon DTO

public class PrimarySkillDTO { 
    private Integer id; 
    private Integer rating; 
    private List<Integer> roleIds; 
    private String name; 
} 

Je les annotations suivantes dans la classe PrimarySkillDTO

@Data 
@Builder 
@AllArgsConstructor 
@JsonIgnoreProperties(ignoreUnknown = true) 
@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) 
+0

semble fonctionner ici: [PrimarySkillDTO (id = 3, roleIds = [2], rating = 2)] - à quoi ressemble votre DTO? –

+1

Comment java8 se rapporte-t-il à cette question? N'est-ce pas juste Jackson? –

+0

@ Nick-vanderhoven Ajouté DTO –

Répondre

4

Le problème est que l'annotation JsonNaming nécessite snake_case et vous ne l'utilisez pas.

Pour le résoudre

  • supprimer l'annotation @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
  • ou, renommer la variable dans la chaîne JSON à role_ids
+0

OK.Je l'ai eu.Merci beaucoup –

+0

Super! N'hésitez pas à accepter la réponse si cela vous a aidé. –