У нас есть:
- набор переменных JSON с
names_all_lowercase_with_underscores
- Java-объектами, которые должны иметь
usualCamelCaseNames
из-за оченьЖесткий Sonar Checker (на котором мы не можем изменить правила).
Чтобы упростить ситуацию:
- Я пытаюсь придать здравый смысл в коде, который используетверсии V1 (codehaus) и V2 (fastxml) (пытается сохранить только V2).
Поскольку несколько вызовов WS имеют одинаковую структуру внешнего управления, но разные «полезные нагрузки», внешняя структура является универсальнойclass:
class Data<Payload> {
private control_attr;
private Payload pay_load;
}
В идеале, для каждого атрибута должен быть @JsonAlias ("json_name"), который будет использоваться для сериализации / десериализации.
class Data<Payload> {
@JsonAlias("control_attr")
private String controlAttr;
@JsonAlias("pay_load")
private Payload payLoad;
}
Но, к сожалению, @JsonAlias
работает не так. Я пытался поставить @JsonProperty
на атрибуты (без результата) и даже
@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
Но все, что я пробую, единственноечто, кажется, считается фактическим получателем:
@JsonGetter("control_attr")
public String getControlXXXAttr { return controlAttr; }
устанавливает controlXXXAttr
в JSON (*). И, к сожалению,y это решение, которое я не могу использовать из-за упомянутых выше проверок сонара.
Я что-то упустил?
(*), поскольку это также проблема с неуниверсальным атрибутом, яПредположим, что универсальный класс здесь не имеет значения.