2017-02-22 10 views
1

У меня есть JSON строка называется primarySkillStr:Как преобразовать строку в список в java8 с помощью ObjectMapper?

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

] 

Я пытаюсь отобразить его на объект следующим образом:

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

Но когда И превращения этого в List то roleIds список является null. Я делаю что-то неправильно или есть другой способ?

Это мой DTO

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

У меня есть следующие аннотации в PrimarySkillDTO классе

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

, кажется, работает здесь: [PrimarySkillDTO (ID = 3, roleIds = [2], rating = 2)] - Как выглядит ваш DTO? –

+1

Как java8 относится к этому вопросу вообще? Разве это не Джексон? –

+0

@ Nick-vanderhoven Добавлено DTO –

ответ

4

Проблема заключается в том, что ваш JsonNaming аннотаций требует snake_case, и вы не используете его.

Для ее решения

  • удалить аннотацию @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
  • или переименовать переменную в JSON строки в role_ids
+0

OK.I получил его. Спасибо большое –

+0

Отлично! Не стесняйтесь принять ответ, если он вам поможет. –