认识适配器:JSON绑定概述系列

适配器通过实现JsonbAdapter接口来配置自定义对象的创建和序列化。 方法AdaptToJson()AdaptFromJson()被执行序列化和反序列化操作的逻辑覆盖。

下一篇文章介绍了使用自定义序列化器和反序列化器自定义JSON-B的最高级方法。

此处的示例实现中,已经使用代码实现了AdaptToJson()方法,该代码使用JSON Processing API中的JSON对象构建器将Booklet对象转换为JsonObjectAdaptFromJson()方法从JsonObject实例构造Booklet对象。

public class BookletAdapter implements JsonbAdapter<Booklet, JsonObject> {@Overridepublic JsonObject adaptToJson(Booklet booklet) {return Json.createObjectBuilder().add("title", booklet.getTitle()).add("firstName", booklet.getAuthor().getFirstName()).add("lastName", booklet.getAuthor().getLastName()).build();}@Overridepublic Booklet adaptFromJson(JsonObject json) {Booklet booklet = new Booklet(json.getString("title"),new Author(json.getString("firstName"),json.getString("lastName")));return booklet;}
}

如您所见, AdaptToJson()方法将Author对象展为两个属性: firstNamelastNameAdaptFromJson()方法将重建Author对象并输出Booklet实例。

JsonbAdapter非常灵活,可用于自定义单个字段以及整个对象的序列化和反序列化

这是通过标记应使用JsonbTypeAdapter注释自定义的字段,方法或类并将其传递给要使用的JsonbAdapter的类名来实现的。

此处显示了示例实现firstName字段标记有JsonbTypeAdapter批注和指定为适配器的FirstNameAdapter类。

public class Author {@JsonbTypeAdapter(FirstNameAdapter.class)private String firstName;
}public class FirstNameAdapter implements JsonbAdapter<String, JsonValue> {@Overridepublic JsonValue adaptToJson(String fullName) {return Json.createValue(fullName.subSequence(0, 1).toString());}@Overridepublic String adaptFromJson(JsonValue json) {return json.toString();}}

最后,这是使用自定义序列化器和反序列化器自定义JSON-B的最先进方法。

除了我在这些博客文章中讨论的内容之外,关于JSON Binding API还有更多的知识要知道。

翻译自: https://www.javacodegeeks.com/2018/05/get-to-know-adapters-json-binding-overview-series.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软新浏览器_要超越Chrome?微软新发布的这款浏览器,有翻天覆地的变化!

可爱的分割线系统迷还记得&#xff0c;当年Edge浏览器刚发布的时候&#xff0c;真的是备受期待。可惜的是&#xff0c;由于其糟糕的体验&#xff0c;以及不完善的插件&#xff0c;最终让它变成了第二个IE。可能是出于无奈&#xff0c;微软选择放弃自家渲染引擎&#xff0c;改用…

centos mount 用法_linux screen的用法 - mouseleo

12016.04.02 17:34:56字数 1,019阅读 26,104大家在初次接触linuxVPS时&#xff0c;会发现linux操作和windows操作太不相同的&#xff0c;windows都是图形操作界面&#xff0c;而linux一般是命令行操作&#xff0c;当然&#xff0c;linux也有图形操作界面&#xff0c;但是我们在…

php memcache 封装类,php 封装memcache类

/** memcache类*/class Memcacheds{//声明静态成员变量private static $m null;private static $cache null;private function __construct() {self::$m new Memcache();self::$m->connect(www.cat.com,11211); //写入缓存地址,端口}//为当前类创建对象private static fu…

jedis入门_Jedis入门

jedis入门嗨&#xff0c;这些天我开始研究Redis。 我听说过很多&#xff0c;所以我决定尝试一下。 Redis在其网站上定义为“ 开源高级键值存储”。 它通常被称为数据结构服务器&#xff0c;因为键可以包含字符串&#xff0c;哈希&#xff0c;列表&#xff0c;集合和排序集合 。…

电脑动态壁纸_每日壁纸—水彩插画少女动漫手机高清无水印壁纸第二波

- End -猜你喜欢&#xff1a;看新闻竟然可以赚钱&#xff1f;&#xff1f;&#xff1f;朋友圈千万别设置三天可见&#xff01;哈哈哈~圣诞节&#xff0c;你收到过的奇葩礼物是什么&#xff1f;教你玩赚支付宝红包攻略&#xff0c;如何领大额红包&#xff01;&#xff01;&#…

php赋值 jq,使用js和jQuery如何实现指定赋值方法

下面我就为大家分享一篇js和jQuery以及easyui实现对下拉框的指定赋值方法&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。js实现&#xff1a;1. 通过让第i个option为selected实现选中第i个&#xff0c;代码如下&#xff1a;(id为下拉框id)(1) document.getEle…

混合云的承诺,收益和产品

云承诺将为我们提供所有灵活性。 有机会在需要时访问无限资源并相应地付款。 我们将不再需要花费时间安装&#xff0c;配置和维护服务器。 我们被承诺将有更多的时间来“仅仅编码”。 取而代之的是&#xff0c;我们越来越多地锁定供应商&#xff0c;而少数云服务商如此之大&am…

c语言汉字属于什么类型_狠准!你的名字属于什么类型 就是什么性格

1.用简体中文写出自己的名字(不包括姓氏),再写出每个字的笔画。2.算出字的总笔画,然后对照下面的表找出对应的。 如:杰伦 8划6划14划阳型(1、10、19、28、37、46、55、64)水型(2、11、20、29、38、47、56、65)空型(3、12、21、30、39、48、57、66)木型(4、13、22、31、40、49、…

javascript里用php,php中使用javascript - 程序园

方法一: 先用PHP生成js代码&#xff0c;然后通过浏览器的自动刷新&#xff0c;将javascript变量传递到PHP脚本中。注意&#xff1a;在实际应用中要防止用户在地址栏内更改传递的变量值。if($qq) echo $qq.;else echo "";echo $qq;?>方法二&#xff1a;先用docume…

java架构师_成为一名Java高级架构师究竟要学哪些东西??

Java架构师&#xff0c;应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢&#xff0c;总体来说呢&#xff0c;有两方面&#xff0c;一个是基础技术&#xff0c;另一个就是组织能力和提出解决方案能力…

php53 php55区别,详解 PHP 中的三大经典模式

原文&#xff1a;https://www.cnblogs.com/heyue0117/p/11869676.html单例模式单例模式的含义:作为对象的创建模式&#xff0c;单例模式确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本&#xff0c;而是会向单例类内部…

javafx中的tree_JavaFX中的塔防(3)

javafx中的tree在最后一部分中&#xff0c;您了解了如何创建Sprite&#xff0c;为其设置动画并赋予其Behavior。 但是动画效果不是很好&#xff0c;因为作为Insectoid&#xff0c;您应该总是在飞行的地方看。 记住&#xff1a;安全第一&#xff01; 我们可以通过创建自定义的Ti…

ie浏览器升级_IE 被微软专家从浏览器里除名了,专家说它只是个兼容性解决方案...

随着 Chrome 等第三方浏览器的崛起&#xff0c;以及微软 Edge 浏览器的替代&#xff0c;家喻户晓的 IE 浏览器正在走向边缘化。2016 年&#xff0c;IE 浏览器的市场份额下跌了 55%。随之而来着来的还有用户的种种恶搞&#xff0c;IE 的反应慢、易崩溃都成了读者制图时讽刺的目标…

谱修正 matlab,自适应谱修正LU分解法解算高病态法方程

自适应谱修正LU分解法解算高病态法方程谱修正迭代算法及其改正算法均没有很好地解决收敛速度与降低矩阵病态性之间的矛盾,且改进算法的阻尼因子缺乏有效的确定方法。针对该问题,提出自适应谱修正(本文共5页)阅读全文>>随着固体激光向高能量和超短脉冲方向快速发展,其对高…

dos命令行设置网络优先级_替代windows系统下cmd的10款命令行工具

喜欢用linux系统的或者从事开发编程的朋友可能会经常用到命令行工具&#xff0c;下面会整理一些windows下命令行工具。1.powershell系统自带powershell它可以说cmd的升级版、补充版&#xff0c;PowerShell需要.NET环境的支持&#xff0c;借助.NET Framework平台强大的类库&…

Spring Cloud Gateway –配置简单路由

可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品&#xff0c;并有助于在微服务环境中实现Gateway模式 。 它建立在 Spring Boot 2和Spring Webflux端到端都是无阻塞的-它公开了一个基于Netty的服务器&#xff0c;使用基于Netty的客户端进行下游微服务…

win7台式电脑怎么连wifi_台式电脑怎么用wifi网络

现在很多朋友的手机使用的都是wif网络&#xff0c;既然手机可以用wifi&#xff0c;那么电脑怎么用wifi呢&#xff0c;其实电脑用wifi的方法也有很多种&#xff0c;为了大家通俗易懂&#xff0c;先来说一种简单的方法吧&#xff01;台式电脑怎么用wifi网络1、首先必须要有一个无…

敏感词库php数组,PHP 实现敏感词 / 停止词 过滤(附敏感词库),敏感类词语大全...

PHP 实现敏感词 / 停止词 过滤(附敏感词库)PHP实现了敏感词/停用词过滤(带敏感词库)&#xff0c;过滤敏感单词和字符是网站&#xff0c;的一项基本功能&#xff0c;因此有必要设计一个好的、高效的过滤算法。在敏感词过滤算法中&#xff0c;必须减少计算量&#xff0c;而DFA算法…

分子动力学模拟软件_功能玻璃专题——分子动力学模拟预测氧化钠含量对二元钠硅酸盐玻璃弹性模量的影响...

赵 谦 1&#xff0c;祖 群 1&#xff0c;齐 亮 2&#xff0c;胡永杰 2&#xff0c;孙雪坤3&#xff0c;陈 阳 1(1. 中材科技股份有限公司&#xff0c;中国南京 210012&#xff1b;2. 美国密歇根大学&#xff0c;美国密歇根州安娜堡 48109-236&#xff1b; 3. 美国大陆地科技…

javafx中的tree_JavaFX中的塔防(2)

javafx中的tree在最后一部分&#xff0c;我们创建了一个简单的编辑器&#xff0c;让我们放置炮塔。 现在&#xff0c;我们将在敌人起源处添加一个生成点&#xff0c;并为其定义攻击目标。 首先&#xff0c;我将通过对象层向地图添加更多信息。 这是标准的TMX&#xff0c;因此我…