找不到类型的响应对象的 MessageBodyWriter:媒体类型的 java.util.LinkedHashMap:application/json

Posted

技术标签:

【中文标题】找不到类型的响应对象的 MessageBodyWriter:媒体类型的 java.util.LinkedHashMap:application/json【英文标题】:Could not find MessageBodyWriter for response object of type: java.util.LinkedHashMap of media type: application/json 【发布时间】:2012-08-21 23:37:19 【问题描述】:

我有这个返回 JSON 代码的 REST 服务:

@GET
@Path("/mypath")
@Produces(MediaType.APPLICATION_JSON)
public Response getS() 
    Map<String, String> map = new LinkedHashMap<String, String>();

    map.put(key1, val1);
    map.put(key2, val2);

    return Response.ok(map, MediaType.APPLICATION_JSON).build();

此服务部署在 Tomcat 服务器中。我正在使用 RESTeasy 作为框架。在尝试访问该服务时,我遇到了这个:

找不到响应对象类型的 MessageBodyWriter: 媒体类型的java.util.LinkedHashMap:application/json。

我不明白是什么问题。

提前致谢

【问题讨论】:

docs.jboss.org/resteasy/docs/2.3.3.Final/userguide/html_single/… 您是否尝试直接返回Map&lt;String, String&gt;,而不是Response 对象? 这可能会有所帮助:community.jboss.org/thread/191022?_sscc=t @Flavio:是的,我尝试直接返回 Map 而不是 Response,但我遇到了同样的问题。 我通过在this link 中找到的修改解决了 Tomcat 中的问题。作者写了他如何用 JSON 恢复地图。 但我在 JBOSS 中总是遇到同样的问题 【参考方案1】:

您如何部署您的应用程序?你用什么应用服务器?什么版本的 RestEasy?您指定了哪些 RestEasy 配置(在 web.xml 或 Application 类中)? Resteasy 依赖提供者来进行对象的序列化/反序列化。 这些提供程序需要包含在您的 JAX-RS 应用程序的类路径中。根据您的构建、应用程序打包和运行时环境,这些提供程序可能会丢失。此外,可以配置提供者的发现,例如自动发现类路径中的所有 privoder,或仅使用 conf 中明确提及的那些。常用的具有 application/json 功能的提供程序是 resteasy-jackson-providerresteasy-jettison-provider。验证您的类路径中是否至少有一个可用。

【讨论】:

以上是关于找不到类型的响应对象的 MessageBodyWriter:媒体类型的 java.util.LinkedHashMap:application/json的主要内容,如果未能解决你的问题,请参考以下文章

找不到 MessageBodyWriter 类型的响应对象:com.sun.jersey.api.json.JSONWithPadding 媒体类型:application/x-javascript

找不到源类型的查询模式的实现:反序列化服务响应时找不到选择

我不断收到此错误:找不到“对象”类型的不同支持对象“[对象对象]”。 NgFor 只支持

在 GLKView 类型的对象上找不到属性“层”

在“CBPeripheral *”类型的对象上找不到属性“uuid”

在“RKObjectManager”类型的对象上找不到属性“managedObjectStore”