首页 > 其他分享 >Jackson 库中@JsonProperty和@JsonAlias注解实现序列化反序列化

Jackson 库中@JsonProperty和@JsonAlias注解实现序列化反序列化

时间:2024-05-20 19:41:33浏览次数:21  
标签:JsonProperty JsonAlias Java JSON 序列化 ObjectMapper

  Json序列化一般为实体转化生成的 JSON 数据中直接包含嵌套对象的属性
   ObjectMapper mapper = new ObjectMapper();     
   Book book = new Book("Learning Java", "Java");    
    Writer writer = new Writer(110, "Mohit", book);     
    String jsonWriter =           mapper.writerWithDefaultPrettyPrinter().writeValueAsString(writer);
    Json反序列化一般为JSON 数据映射到外层实体对象javabean的属性上
String jsonData =  		    "{" 			  +"\"writerId\" : 111," 			  +"\"mywname\" : \"Mahesh\"," 			  +"\"writerBook\" : {" 			    +"\"bookName\" : \"Learning Spring\"," 			    +"\"bkcat\" : \"Spring\"" 			  +"}" 		   +"}"; 	 
ObjectMapper mapper = new ObjectMapper(); 	 
Writer writer = mapper.readValue(jsonData, Writer.class);
  @JsonProperty是用于定义逻辑属性的标记注释。一般被用于JSON的序列化和反序列化。

​ @JsonAlias为反序列化期间接受的属性定义一个或多个别名,即将JSON数据设置为Java对象。但是在序列化时,即从Java对象获取JSON时,只使用实际的逻辑属性名而不是别名。

​ @JsonDeserialize ;JSON字符串转JavaBean反序列化时, 将其他类型字段转化为BigDecimal类型

@JsonAlias({"passengerName", "newName"})
private String name;
@JsonProperty("type")
private String specification;
@JsonProperty("count")
@JsonDeserialize(using = BigDecimalDeSerialize.class)
private Bigdicimal amount;

标签:JsonProperty,JsonAlias,Java,JSON,序列化,ObjectMapper
From: https://www.cnblogs.com/chillymint/p/18202679

相关文章

  • Java常用的JSON序列化与反序列化工具实践
    JSON简介:JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,通常用于在不同系统之间传输数据。它基于JavaScript对象语法,但已成为一种独立于语言的格式。JSON数据以键值对的形式组织,易于阅读和编写。为什么要使用JSON?1.简单易用:JSON的语法简单,易于理解和编写,可以......
  • 【C#】读取文件反序列化对应类
    ///<summary>///反序列化///</summary>///<paramname="filePath">文件路径</param>///<returns></returns>publicstaticList<T>JsonToList<T>(stringfilePath){stringjsonStr=File.ReadAllText(fi......
  • 如何正确实现一个自定义可序列化的 Exception
    最近在公司的项目中,编写了几个自定义的Exception类。提交PR的时候,sonarqube提示这几个自定义异常不符合ISerializablepatten.花了点时间稍微研究了一下,把这个问题解了。今天在此记录一下,可能大家都会帮助到大家。自定义异常#编写一个自定义的异常,继承自Exception,其中......
  • redis存储之序列化问题
    1.问题描述:在SpringBoot集成Redis过程中,添加进redisf的内容如下2.出现这种情况的原因(1) 键和值都是通过Spring提供的Serializer序列化到数据库的(2) RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer3.解......
  • Weblogic T3反序列化漏洞(CVE-2018-2628)
    目录前言T3协议概述漏洞复现修复方案前言WebLogicServer是一个企业级的应用服务器,由Oracle公司开发,支持完整的JavaEE规范,包括EJB、JSP、Servlet、JMS等,适合大型分布式应用和高负载场景。T3协议概述T3协议(Two-TierTCP/IPProtocol),是WebLogic中的一种专有协议,建立在TCP/IP协......
  • 使用Spring HttpExchange时数据对象遇LocalDateTime字段类型json反序列化失败的解决方
    方法:重写MessageConverter,使得yyyy-MM-ddHH:mm:ss的字符串能反序列化到LocalDateTime类型上。@ConfigurationpublicclassHttpClientConfig{@Value("${service.host}")privateStringhost;@BeanRestClient.BuilderrestClientBuilder(){r......
  • 关于SpringBoot项目使用Hutool工具进行json序列化时出现Null值过滤或者丢失的问题(转
    ##问题描述:SpringBoot项目中,一直使用的时Hutool的json转换工具,被强制要求不能使用fastJson工具;之前都没什么问题,突然有一次使用parseObj()进行json字符串转换json对象时,突然报错:Noserializerfoundforclasscn.hutool.json.JSONNullandnopropertiesdiscoveredtocreate......
  • [HDCTF 2023]YamiYami python中的另一种反序列化--yaml
    今天做了到新颖的题,关于python中的yaml反序列化的题目,直接上题吧。发现第一个链接的参数是?url=XXXX,一眼利用点。嗯?直接出了flag,应该是非预期解。再看看有app.py,那就试试。发现app.*被过滤了,二次编码绕过试试。点击查看代码@app.route('/')defindex():session['pas......
  • 05限流和序列化
    限流和序列化1.限流限流,限制用户访问频率,一般的限流用户信息都存于缓存之中,例如:用户1分钟最多访问100次或者短信验证码一天每天可以发送50次,防止盗刷。对于匿名用户,使用用户IP作为唯一标识。对于登录用户,使用用户ID或名称作为唯一标识。1.1限流组件使用步骤(1)创建限流组......
  • fastjson和 gson 的反序列化的一个差异
     publicclassResponse01{privateThirdDatathirdData;publicThirdDatagetThirdData(){returnthirdData;}//ThirdDataextendBaseThirdDatapublicvoidsetThirdData(BaseThirdDatathirdData){thi......