Quarkus REST API 返回 JSON 时去除额外的数组包装

quarkus rest api 返回 json 时去除额外的数组包装

正如摘要中所述,本文将探讨如何在使用 Quarkus 构建 REST API 时,避免返回 JSON 数据时出现额外的数组包装。当使用 Multi 作为返回类型,并指定 MediaType.APPLICATION_JSON 时,Quarkus 默认会将所有结果收集到一个列表中,然后将该列表作为 JSON 数组返回。这可能不是我们期望的行为,特别是当我们需要返回一个单独的 JSON 对象时。

问题描述

在 Quarkus REST API 中,如果使用 Multi 来返回 JSON 数据,可能会遇到响应被额外的数组包装的情况。例如,以下代码:

  @Path("/testData")  @GET  @Produces(MediaType.APPLICATION_JSON)  public Multi  test() throws IOException {      return Multi.createFrom().items(IOUtils.toString(getClass().getResourceAsStream("/TestJSON.json"), StandardCharsets.UTF_8));  }

假设 TestJSON.json 文件的内容如下:

{  "isA": "customerDocument",  "createdOn": "2022-10-10T12:29:43",  "customerBody": {    "customerList": [      {        "name": "Batman",        "age": 45,        "city": "gotham"      }    ]  }}

实际的响应结果会变成:

[  {    "isA": "customerDocument",    "createdOn": "2022-10-10T12:29:43",    "customerBody": {      "customerList": [        {          "name": "Batman",          "age": 45,          "city": "gotham"        }      }    }  }]

可以看到,原始的 JSON 对象被一个额外的数组包装。

解决方案

为了避免这种额外的数组包装,可以使用 @Stream(Stream.MODE.RAW) 注解。此注解指示 Resteasy 直接将每个值写入响应,而无需进行任何格式化。

Find JSON Path Online Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30 查看详情 Find JSON Path Online

  @Path("/testData")  @GET  @Produces(MediaType.APPLICATION_JSON)  @Stream(Stream.MODE.RAW)  public Multi  test() throws IOException {      return Multi.createFrom().items(IOUtils.toString(getClass().getResourceAsStream("/TestJSON.json"), StandardCharsets.UTF_8));  }

通过添加 @Stream(Stream.MODE.RAW) 注解,Resteasy 将不会收集所有值并将它们包装到列表中。而是将每个字符串直接写入响应流,从而避免了额外的数组包装。

原理解析

根据 Resteasy 的文档,如果没有 @Stream 注解,Resteasy 会收集 Multi 中的所有值,然后将它们包装到一个 java.util.List 实体中,并将其发送到客户端。而使用 @Stream(Stream.MODE.RAW) 注解后,每个值都会在可用时直接写入网络,无需任何格式化。

注意事项

使用 @Stream(Stream.MODE.RAW) 注解不仅会改变响应的格式,还会影响 “reactivity”,即是否等待整个 Multi 完成生成值后再批量发送,还是逐个发送。这可能是一个重要的考虑因素,具体取决于应用程序的需求。

如果需要返回一个单独的 JSON 对象,并且不需要流式处理的特性,那么最好避免使用 Multi 作为返回类型。可以考虑直接返回一个 JSON 对象,例如使用 javax.json.JsonObject 或者自定义的 Java Bean。

总结

通过使用 @Stream(Stream.MODE.RAW) 注解,可以有效避免在使用 Quarkus 构建 REST API 时,Multi 返回类型导致的额外数组包装问题。这种方法提供了更灵活的流式响应处理,但也需要根据实际需求仔细考虑其影响。在选择返回类型时,应权衡流式处理的优势与直接返回 JSON 对象的简洁性。

以上就是Quarkus REST API 返回 JSON 时去除额外的数组包装的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/246380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 03:41:30
下一篇 2025年11月4日 03:45:23

相关推荐

  • 告别异步编程的噩梦:Guzzle Promises 助我轻松应对复杂网络请求

    我的应用需要从多个API获取数据,每个API调用都是异步的。最初,我使用回调函数来处理这些请求,代码很快就变得难以理解和维护。想象一下,十几个异步请求嵌套在一起,每个请求都有成功和失败的回调函数,代码的可读性和可维护性可想而知。调试更是噩梦,一旦出现错误,很难追踪到问题的根源。 为了解决这个问题,我…

    2025年12月11日
    000
  • 夸克网页版免费观看 夸克浏览器在线使用链接

    夸克网页版免费观看入口在https://www.quark.cn/,该平台资源覆盖电影、剧集、动漫等类型,支持AI搜索与多设备同步,界面简洁无需复杂注册即可浏览,内置广告过滤并提供离线缓存功能。 夸克网页版免费观看入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器在线使用链接,…

    2025年12月6日 软件教程
    000
  • Java数据校验框架的比较与选型指南

    在java应用开发中,bean validation(jsr 380/303)是首选验证框架,因为它提供标准化的api和注解驱动机制,与spring生态无缝集成,支持声明式校验、可扩展性强,适用于结构化数据校验;其他值得考虑的框架包括apache commons validator,适用于轻量级或非…

    2025年12月2日 java
    000
  • 夸克浏览器账号登录注册入口_夸克浏览器个人中心页面链接

    夸克浏览器账号登录注册入口为https://account.quark.cn,用户可通过手机号或邮箱注册,完成验证码验证并设置密码,支持多设备同步浏览记录、云书签、历史记录存储及个性化设置,同时提供文件管理、隐私控制和订阅内容聚合等个人中心服务。 夸克浏览器账号登录注册入口在哪里?这是不少网友都关注…

    2025年12月2日 电脑教程
    000
  • 夸克浏览器官方下载安装最新版_夸克浏览器官网首页入口地址

    夸克浏览器官方下载安装最新版入口地址是https://www.myquark.cn/,该平台集成AI搜索、多端数据同步、智能文档处理与云端存储等功能,提供安全纯净的浏览体验。 夸克浏览器官方下载安装最新版入口地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器官网首页入口地址,感…

    2025年12月2日 电脑教程
    000
  • 夸克浏览器论坛社区入口地址_夸克浏览器用户交流网址导航

    夸克浏览器论坛社区入口地址是https://bbs.quark.cn/,用户可在此分享使用技巧、参与话题活动、获取技术答疑、提交功能建议,并查阅教程指南与更新文档。 夸克浏览器论坛社区入口地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器用户交流网址导航,感兴趣的网友一起随小编…

    2025年12月2日 电脑教程
    000
  • 夸克浏览器官网首页直达链接_夸克浏览器官方网站官方入口

    夸克浏览器官网首页直达链接是https://www.quark.cn/,用户可在此访问集成搜索、AI助手、网盘服务和文档工具的核心功能,支持多端账号同步与智能浏览优化体验。 夸克浏览器官网首页直达链接在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器官方网站官方入口,感兴趣的网友一…

    2025年12月2日 电脑教程
    000
  • 夸克网页版一键直达 夸克网页版入口官网免安装

    夸克网页版官网入口为https://www.quark.cn/,用户可直接通过浏览器访问,无需安装客户端。该平台支持多设备登录,界面简洁,操作便捷,内置智能搜索框,提升查找效率。同时集成网盘管理、文档在线处理、学习辅助及高考信息查询等功能,满足多样化需求。在浏览体验上,具备广告过滤、智能排版、视频缓…

    2025年12月2日 电脑教程
    000
  • 夸克网页版下载入口 夸克网盘网页版文件下载教程

    夸克网盘网页版文件下载入口在个人存储空间的文件列表中,登录后进入网盘页面,勾选目标文件点击“下载”按钮即可。通过https://www.quark.cn/访问,支持手机号验证码或第三方账号登录,界面左侧为导航栏,可管理文件分类、回收站等;支持批量上传、拖拽上传,文件按类型自动归类;内置播放器支持视频…

    2025年12月2日 电脑教程
    000
  • 夸克浏览器官网首页访问地址_夸克浏览器官方网站链接入口

    夸克浏览器官网首页访问地址是https://www.quark.cn/,该网站提供AI驱动搜索、多端数据同步、极简浏览界面及PPT生成等高效工具。 夸克浏览器官网首页访问地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器官方网站链接入口,感兴趣的网友一起随小编来瞧瞧吧! htt…

    2025年12月2日 电脑教程
    000
  • 夸克网页版看视频 夸克浏览器在线视频播放入口

    夸克网页版看视频入口在官网首页登录后通过网盘播放。用户可直接访问quark.cn,或从App跳转、搜索官网、扫码进入网页版;在搜索框输入影视名+“夸克网盘资源”查找内容,也可从社交平台获取分享链接并保存至网盘,在线点击播放。播放支持高清、倍速、字幕、投屏及本地下载功能。 夸克网页版看视频入口在哪里?…

    2025年12月2日 电脑教程
    000
  • 夸克浏览器官方网址主页链接_夸克浏览器官网直达访问入口

    夸克浏览器官方网址主页链接是https://www.quark.cn/,用户可直接访问该地址使用其集成AI搜索、文档处理、多端同步和极简设计的网页服务。 夸克浏览器官方网址主页链接在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器官网直达访问入口,感兴趣的网友一起随小编来瞧瞧吧! …

    2025年12月2日 电脑教程
    000
  • 夸克浏览器小说阅读模式入口_夸克浏览器看小说网址导航

    夸克浏览器小说阅读模式入口在https://novel.quark.cn/,进入后搜索书籍并点击“开启阅读模式”即可。 夸克浏览器小说阅读模式入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器看小说网址导航,感兴趣的网友一起随小编来瞧瞧吧! https://novel.quar…

    2025年12月2日 电脑教程
    000
  • 夸克网盘资源热门推荐_夸克网盘入口便捷获取链接直达

    夸克网盘资源热门推荐_夸克网盘入口便捷获取链接直达:1、访问官方网址https://pan.quark.cn/登录使用;2、平台提供公务员考试资料、影视合集、PPT模板等优质资源;3、推荐it技术视界、夸父资源社、趣盘搜、爱盘搜等辅助平台;4、可通过搜索“迪士尼系列动画139部藏版”“经典香港电影合…

    2025年12月2日 软件教程
    000
  • 夸克网盘资源共享通道_夸克网盘入口最新资源链接直达

    夸克网盘入口最新资源链接可通过云迹寻宝、无忧盘搜、口袋云、ED3000、盘搜VIP等平台直达,支持影视、教程、书籍等资源搜索,无需注册免广告,配合知了搜、快搜虾等辅助站点使用更高效。 夸克网盘入口最新资源链接直达在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克网盘资源共享通道的入口信息…

    2025年12月2日 软件教程
    000
  • 夸克网盘资源精品合集_夸克网盘入口快速下载链接直达

    夸克网盘资源精品合集_夸克网盘入口快速下载链接直达?这是不少网友都关注的,接下来由PHP小编为大家带来夸克网盘资源精品合集_夸克网盘入口快速下载链接直达,感兴趣的网友一起随小编来瞧瞧吧! 夸克网盘资源精品合集入口 1、夸克网盘资源精品合集可通过其官方应用或网页端直接访问,官方地址为:https://…

    2025年12月2日 软件教程
    000
  • 夸克网盘资源高清专区_夸克网盘入口安全分享链接直达

    夸克网盘高清资源可通过App内“网盘”模块搜索“高清”“4K”等关键词获取,优先选择高活跃用户分享内容,并利用“发现”板块加入影视群组获取持续更新资源。 夸克网盘资源高清专区入口地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克网盘资源高清专区,夸克网盘入口安全分享链接直达,感兴趣的…

    2025年12月2日 软件教程
    000
  • 夸克网盘资源一键获取_夸克网盘入口高速下载链接直达

    夸克网盘入口高速下载链接直达官网pan.quark.cn,用户可通过手机应用商店下载移动端,或在官网下载PC客户端,登录即享10GB免费空间,支持文件上传、下载、在线预览及多设备同步,同时提供资源搜索、云收藏播放与PDF转换等高效功能。 立即进入“☞☞☞☞☞点击夸克资源搜索引擎链接☜☜☜☜☜”; 立…

    2025年12月2日 软件教程
    000
  • 夸克网盘资源极速下载_夸克网盘入口稳定分享链接直达

    夸克网盘入口为https://pan.quark.cn,用户可通过手机号注册登录,享受免费存储空间,支持文件上传管理、在线预览、快速搜索及分类管理。 夸克网盘入口稳定分享链接直达在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克网盘资源极速下载入口,感兴趣的网友一起随小编来瞧瞧吧! 夸克…

    2025年12月2日 软件教程
    000
  • 夸克浏览器内测版申请入口链接_夸克浏览器体验版下载地址

    夸克浏览器内测版申请入口链接为https://www.myquark.cn,用户可通过该官网访问AI搜索、文档处理、云存储等功能,并支持多端协同与高效检索。 夸克浏览器内测版申请入口链接在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器体验版下载地址,感兴趣的网友一起随小编来瞧瞧吧…

    2025年12月2日 电脑教程
    000

发表回复

登录后才能评论
关注微信