如何在Jackson 2.7+上为ObjectMapper设置命名策略?

时间:2016-02-18 01:45:02

标签: java jackson

此代码曾用于使用Jackson 2.6.x,但不适用于2.7 +。

// Lombok for code simplicity
@Setter
@Getter
@AllArgsConstructor
public static class Naming {
    int camelCase;
}

...
Naming naming = new Naming(1);
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(
  PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

System.out.println(mapper.writeValueAsString(naming));
// "{\"camel_case\":1}" Jackson 2.6.x
// "{\"camelCase\":1}" Jackson 2.7.x

我错过了什么?

1 个答案:

答案 0 :(得分:1)

事实证明,Lombok注释public function manage($user, $userToEdit) { return $user->type === 'admin' || $user->id === $userToEdit->id; } 导致了问题。

GitHub报道了a related issue。这似乎是杰克逊的一个错误。它可以在2.7.0和2.7.1版本中重现。