Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在与泽西一起在REST服务中返回JSON时,没有找到媒体类型=application/JSON的MessageBodyWriter

在与泽西一起在REST服务中返回JSON时,没有找到媒体类型=application/JSON的MessageBodyWriter
EN

Stack Overflow用户
提问于 2016-05-16 00:57:28
回答 5查看 17.7K关注 0票数 7

我正在尝试使用泽西岛创建一个非常简单的REST服务。这是服务代码

代码语言:javascript
运行
AI代码解释
复制
@Path("/UserService")
public class UserService {

    @GET
    @Path("/users")
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getUsers() {
        User user = new User(1, "Thomas", "Greene");
        List<User> userList = new ArrayList<User>();
        userList.add(user);
        return userList;
    }
}

当我通过Postman运行它时,它会返回一个XML响应。

现在,我想要返回一个JSON响应。因此,我将mediatype更改为application/json

代码语言:javascript
运行
AI代码解释
复制
@Path("/UserService")
public class UserService {

    @GET
    @Path("/users")
    @Produces(MediaType.APPLICATION_JSON)
    public List<User> getUsers(){ 
        User user = new User(1, "Thomas", "Greene");
        List<User> userList = new ArrayList<User>();
        userList.add(user);
        return userList;
   }    
}

它给出了Tomcat日志中的以下错误:

严重:没有找到媒体类型为MessageBodyWriter =application/json、type=class java.util.ArrayList、genericType=java.util.List。

有人能指点我如何得到JSON响应吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-05-16 01:36:22

要使用Jackson2.x作为JSON提供程序,需要将jersey-media-json-jackson模块添加到pom.xml文件中:

代码语言:javascript
运行
AI代码解释
复制
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.22.2</version>
</dependency>

然后将JacksonFeature注册到您的Application/ResourceConfig子类中。

要了解更多细节,请看一下泽西文档

票数 14
EN

Stack Overflow用户

发布于 2017-07-12 03:01:28

我现在也对JAXB绑定感到有些不安,因此让我在这里总结一下我的发现--如果我说了一些愚蠢的话,请纠正我:

  1. 当然,您必须有一个库来进行JSON (反)序列化,在我的例子中,它是Moxy。
  2. 您必须告诉JAXB它应该支持哪些类。有多种方法可以做到这一点,最简单的方法似乎是在与类匹配的目录中添加一个jaxb.properties文件,其唯一内容是文本jaxb.properties。我的意思是,如果您的类位于src/main/java目录中,而在那里的包是com.pkg 1实体,那么将这个文件添加到src/main/resources中,并添加为com/pkg1/entities/jaxb.properties。
  3. 默认情况下,JAXB适用于POJO。因此,您需要一个没有参数的构造函数、一个get-和一个set-方法。只有这样,这个字段才会出现在JSON中。
  4. 我经常做的是添加第二个构造函数,它将运行时对象传入并设置所有要直接公开的字段。因此,我不需要也不想要一个set-方法。解决方案是用@XmlElement注释get方法。
  5. 我说你需要一个空的/默认的构造函数吗?我花了三个小时才知道为什么class1工作得很好,class2得到了MessageBodyWriter错误。我忘了构造函数。格里尔。
  6. 当类配置良好时,您会得到相同的错误(我相信),但是它的一个字段返回一个不能序列化的类型。
  7. 我相信有一种情况是类注释@XmlRootElement导致了这个错误。不确定,但我现在很少使用那个注释。
  8. 如果将列表作为要转换为Json数组的元素之一,JAXB将使用myAbstract类进行序列化。不是很有用,您希望序列化实际的对象。但是JAXB应该如何知道是谁实现/扩展了这个类?您必须使用@XmlSeeAlso注释进行说明。因此,MyAbstract类获得一个类注释@XmlSeeAlso({MyConcrete1.class,MyConcrete2.class})。至少Moxy添加了一个额外的类型字段,告诉使用者它是哪个类。完全合情合理。
  9. 尽管可以返回userList,但更好的选择是返回Response.ok().entity(userList).build();然后还可以返回错误。从逻辑上讲,这是一样的。
  10. 注意您所使用的数据类型。字符串很好,ArrayList也很好,哈希表不行。也取决于您使用的序列化程序。

我希望这对其他人有帮助。

票数 3
EN

Stack Overflow用户

发布于 2016-05-16 00:59:58

您需要在类路径上使用json序列化程序才能使其工作。

只要加上杰克逊,泽西就会在作者中使用这个词。如果您使用的是maven,请将其添加到pom.xml中

代码语言:javascript
运行
AI代码解释
复制
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.7.4</version>
</dependency>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37250131

复制
相关文章
【Json】json在SpringBoot中的格式转换
fastjson深入理解 fastJson对于json格式字符串的解析主要用到了一下三个类:
瑞新
2020/12/07
6.6K0
【Json】json在SpringBoot中的格式转换
java 中getmapping,在Java spring尝试使用@getmapping到API时返回空JSON[通俗易懂]
我有一个带有记录器的@bean,该记录器返回它从JIRA API获得的JSON数据。我当前正在记录启动程序时的响应。现在我想开始在我的控制器中使用@getmapping,并想在localhost:8080/上执行GET请求时记录信息。
全栈程序员站长
2022/07/28
8.3K0
[Go基础]Json在Go中的使用
本文主要根据Go语言Json包[1]、官方提供的Json and Go[2]和go-and-json[3]整理的。
TOMOCAT
2020/06/09
8.4K0
JSON 在JavaScript 中的使用。
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
愷龍
2022/10/06
10.2K0
JQuery处理json与ajax返回JSON实例
json数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合使用了,下面我来给大家介绍jquery处理json数据方法。 JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value)。  “[]”,标识数组,数组内部各个数据之间通过“,”分割,如[“AreaId”:”123”,”AreaId”:”345”]。 很多情况下是对象数组,那就是这样: [{“AreaId”:”123”},{“AreaId
joshua317
2018/04/10
3K0
DTO返回JSON时,不展示某字段;DTO返回JSON时,更改某展示字段的key
//DTO返回JSON时,不展示某字段 @JsonIgnore private String addresses; //DTO返回JSON时,更改某展示字段的key @JsonProperty(value = "addresses") public final CalendarVideoAddressDTO getAddressesJSON() { if (addresses != null) { return JSONObject.pars
qubianzhong
2019/04/22
2.4K0
在 Python 中解析 JSON 数据
json模块是Python 标准库的一部分,它允许你对 JSON 数据进行编码和解码。
雪梦科技
2020/06/28
17.3K0
在 Spring Boot REST API中使用Json Web Token
在本文中,我将展示如何进行基于 Spring Boot 的 REST API进行鉴权。保护 REST API 以避免对公共 API 进行任何不必要的调用已成为一种趋势。我们将使用一些 Spring 引导功能来实现 Spring 安全,并使用 JSON WebTokens 进行授权。
用户4235284
2023/10/14
2850
在 Spring Boot REST API中使用Json Web Token
ajax返回JSON时的处理方式
JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value)。
全栈程序员站长
2022/07/08
2.4K0
[PHP]json_encode中文JSON_UNESCAPED_UNICODE在php5.3返回null
注意当json_encode中文的时候 , 默认是以unicode编码的 , 如果想变成中文需要增加参数JSON_UNESCAPED_UNICODE
唯一Chat
2021/02/04
7760
JSON在PHP中的基本应用
从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
全栈程序员站长
2022/09/07
2.4K0
匿名类中在Json中使用
匿名类 1. 第一步:定义一个类,类中有三个属性Id。Name.Height 属性类型根据“=”右边的值来推断 2. 第二步:创建这个类的对象,然后,用变量p1去指向它 3. var 表示根据右边的类型去推断var的类型
静心物语313
2020/03/24
3.1K0
匿名类中在Json中使用
Php如何返回json数据(返回json对象或json格式数据)
header(‘Content-Type:application/json; charset=utf-8’);
超级小可爱
2023/02/20
17.2K0
springmvc之返回json类型的数据给前端
1、加入三个Jar包 2、为方法加上@ResponseBody注解,方法直接返回相关信息。 使用ResponseBody注解需要在springmvc.xml文件中配置: <mvc:annotation
西西嘛呦
2020/08/26
1.1K0
springmvc之返回json类型的数据给前端
在Python中处理JSON数据的常见问题与技巧
当今互联网时代,JSON(JavaScript Object Notation)已成为一种广泛使用的数据交换格式。在Python中,我们经常需要处理JSON数据,包括解析JSON数据、创建JSON数据、以及进行JSON数据的操作和转换等。本文将为你分享一些在Python中处理JSON数据的常见问题与技巧,帮助你更好地应对JSON数据的处理任务。
华科云商小彭
2023/09/26
4000
在Python中处理JSON数据的常见问题与技巧
在Python中操纵json数据的最佳方式
在日常使用Python的过程中,我们经常会与json格式的数据打交道,尤其是那种嵌套结构复杂的json数据,从中抽取复杂结构下键值对数据的过程枯燥且费事。
朱卫军 AI Python
2022/04/03
4.1K0
在Python中操纵json数据的最佳方式
WebAPI返回JSON
web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法:  方法一:(改配置法)  找到Global.asax文件,在Application_Start()方法中添加一句:
莫问今朝
2018/08/31
3.6K0
Json序列化在golang中的应用
golang对json序列化和反序列化的操作实在是难受,所以说用习惯了高级语言特性,再转到这些偏原生的写法上就会很难受。
happlyfox
2021/03/25
2.2K0
在 WordPress 中使用 JSON
在 PHP 5.2+ 的版本中使用 JSON 去解码数组是非常容易的事情,只需要使用 json_enconde() 这个 PHP 函数,但问题是 WordPress 到目前为止还是支持 PHP 4.3,所以为了保证插件最大的兼容性,在 WordPress 中使用 JSON 的时候,需要额外的第三方类库。
Denis
2023/04/14
5970
Python Flask,Json,返回Json数据,jsonify
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142981.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
1.9K0

相似问题

泽西REST错误,在媒体类型=application/json中找不到MessageBodyWriter

13

泽西- Maven - MessageBodyWriter找不到媒体类型=application/json

22

泽西REST (GET)抛出媒体类型=application/xml未找到的MessageBodyWriter

10

没有找到媒体类型=application/json的jackson服务错误MessageBodyWriter

13

带有Grizzly的泽西岛:在媒体类型=application/json中找不到MessageBodyWriter

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档