Я сделал код, который добавляет комментарии к моему локальному хосту: 3000, но при анализе большого количества информации я хочу удалить «commentModel», но если я удалю его из класса CommentRq, я получаю ошибки
пример комментария: { "commentModel": { "comment": "komentarz", "date": "6/03/19 9:34" }, "id": 1}
я хочу, чтобы это было { "comment": "komentarz", "date": "3/6/19 9:34" }, "id": 1 }
КомментарийRq
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class CommentRq {
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private CommentModel commentModel;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public static class CommentModel {
@JsonProperty("comment")
String resourceName;
@JsonProperty("date")
String resourceNamed;
}
}
КомментарийBody
public class CommentBody {
Date now = new Date();
@JsonInclude(JsonInclude.Include.NON_NULL)
public CommentRq RequestCommentBody() {
return CommentRq.builder()
.commentModel(new CommentRq.CommentModel(
"komentarz",
(DateFormat.getInstance().format(now))
))
.build();
}
}
Здесь я создаю комментарий
Interface.PostComment postComment = Feign.builder()
.client(new OkHttpClient())
.encoder(new JacksonEncoder())
.decoder(new JacksonDecoder())
.logger(new Slf4jLogger(Interface.PostComment.class))
.logLevel(Logger.Level.FULL)
.target(Interface.PostComment.class, "http://localhost:3000/comments/");
@When("i try to add a comment")
public void postComment() {
Map<String, Object> headermap = new HashMap<>();
headermap.put("Content-Type", "application/json");
CommentBody requestComment = new CommentBody();
CommentRes commentRes = postComment.postComment(headermap, requestComment.RequestCommentBody());
id = commentRes.getId();
LOGGER.info("Created: " + DateFormat.getInstance().format(now));
}
Не удается разрешить метод 'commentModel (testyLocalhost.CommentRq.CommentModel)', когда я удаляю частный CommentModel commentModel; из CommentRq




Вы можете аннотировать свой private CommentModel commentModel с помощью @JsonUnwrapped. Он развернет ваш объект commentModel и запишет его поля в корень json. Это будет обрабатывать ваш конкретный случай. Но вы также можете пересмотреть структуру вашего запроса: поместить поля CommentModel в CommentRq и сопоставить объект CommentModel с объектом CommentRq.
спасибо за ответ, но @JsonUnwrapped не работает, и я не уверен, как сделать вторую вещь, которую вы упомянули, можете ли вы дать мне код?
Он должен работать. Пожалуйста, удалите аннотацию @JsonProperty и добавьте @JsonUnwrapped.
да, это работает, мне нужно было добавить его и в другом месте
Второй вариант — не вставлять CommentModel объект и иметь CommentRq вот так public class CommentRq { @JsonProperty("comment") String resourceName; @JsonProperty("date") String resourceNamed; }
Может быть, расскажите нам, какой ошибки вы получаете?