首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不支持org.springframework.web.reactive.function.UnsupportedMediaTypeException:内容类型'application/json;charset=UTF-8‘

不支持org.springframework.web.reactive.function.UnsupportedMediaTypeException:内容类型'application/json;charset=UTF-8‘
EN

Stack Overflow用户
提问于 2018-07-25 16:30:36
回答 5查看 8.4K关注 0票数 9

当我的代码如下所示时,就会出现错误:

代码语言:javascript
复制
@Test
public void getTemplateByIdTest() throws Exception {
    client.get().uri("/template/getTemplate/7")
            .exchange()
            .expectStatus().isOk()
            .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)
            .expectBody(VtTemplateVO.class)
            .returnResult();
}

当我像这样修改我的代码时,它是好的!

代码语言:javascript
复制
@Test
public void getTemplateByIdTest() throws Exception {
    client.get().uri("/template/getTemplate/7")
            .exchange()
            .expectStatus().isOk()
            .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)
            .expectBody(String.class)
            .returnResult();
}

为什么当我使用.expectBody(VtTemplateVO.class)时它会显示org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'application/json;charset=UTF-8' not supported

有人知道吗?请帮帮忙,谢谢

EN

回答 5

Stack Overflow用户

发布于 2018-10-10 14:27:02

我也面临着这个问题,因为Jackson.There需要成为带有注释属性的VtTemplateVO.class的默认构造函数。例如。我所做的-

代码语言:javascript
复制
@JsonCreator
public Comment(@JsonProperty("id")String id, @JsonProperty("text")String text, @JsonProperty("createdTime") LocalDate createdTime) {
        this.id = id;
        this.text = text;
        this.createdTime = createdTime;
}

希望它也适用于你。:)

票数 4
EN

Stack Overflow用户

发布于 2019-06-04 00:21:00

您也可以使用-parameters标志编译代码,而不是使用@JsonProperty注释每个参数(从Java8开始)。这将保留字节码中的参数名称,从而允许Jackson使用它们。请参阅Maven docs

代码语言:javascript
复制
<compilerArgs>
  <arg>-parameters</arg>
</compilerArgs>

您还应该考虑此https://stackoverflow.com/a/44075684/2145769,即参数名称现在已成为您的API的一部分。

票数 2
EN

Stack Overflow用户

发布于 2021-01-06 21:35:05

显然,创建和填充对象时出现的任何问题都可能导致此错误。

在我的例子中,我复制了@JsonProperty,例如:

代码语言:javascript
复制
public class MyObject {
  @JsonProperty("foo")
  private String foo;

  @JsonProperty("foo")
  private String bar;
}

所以我修改为:

代码语言:javascript
复制
public class MyObject {
  @JsonProperty("foo")
  private String foo;

  @JsonProperty("bar")
  private String bar;
}

而且它起作用了。

但我看到其他人评论说,其他错误可能会导致这个错误,比如:

  • 没有setter方法
  • 有重载的setter
  • 没有默认构造函数
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51514296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档