当前位置: 首页 > news >正文

java 和php做网站搜狗收录入口

java 和php做网站,搜狗收录入口,wordpress即时,高端品牌羽绒服嗨,亲爱的同学们!欢迎来到这篇关于 Jackson JSON 解析器中 Java 对象转 JSON 注解的详细解析指南。JSON(JavaScript Object Notation)是一种常用于数据交换的轻量级数据格式,而 Jackson 作为一款优秀的 JSON 解析库&am…

在这里插入图片描述

嗨,亲爱的同学们!欢迎来到这篇关于 Jackson JSON 解析器中 Java 对象转 JSON 注解的详细解析指南。JSON(JavaScript Object Notation)是一种常用于数据交换的轻量级数据格式,而 Jackson 作为一款优秀的 JSON 解析库,通过注解提供了便捷而强大的方式,让我们能够更自由地掌控 Java 对象与 JSON 之间的转换。在这篇博客中,我将带你一探 Jackson 注解的奇妙世界,通过示例代码揭秘 Java 对象转 JSON 注解的魔法!

什么是 Jackson 注解?

在开始之前,让我们先简要了解一下 Jackson 注解是什么。

Jackson 注解是一组用于配置 Java 对象序列化和反序列化过程的注解。通过在 Java 类或字段上添加这些注解,我们可以指导 Jackson 如何处理 JSON 转换。这为我们提供了极大的灵活性,让我们能够通过注解方式定制化 JSON 转换过程,满足不同的需求。

基本注解:@JsonProperty

首先,让我们介绍最基本的注解之一:@JsonProperty。这个注解用于指定 JSON 字符串中的字段名与 Java 对象中的字段名之间的映射关系。

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonPropertyExample {public static void main(String[] args) throws Exception {// 创建一个 ObjectMapper 对象ObjectMapper objectMapper = new ObjectMapper();// 创建一个包含 @JsonProperty 注解的对象JsonPropertyObject jsonPropertyObject = new JsonPropertyObject("Alice", 25);// 将对象序列化为 JSON 字符串String jsonString = objectMapper.writeValueAsString(jsonPropertyObject);// 输出结果System.out.println(jsonString);}
}

在这个例子中,JsonPropertyObject 类的字段 name 被注解为 @JsonProperty("fullName"),这意味着在序列化为 JSON 字符串时,字段 name 将以 "fullName" 作为键。输出结果应该是类似于 {"fullName":"Alice","age":25} 的字符串。

定制化日期格式:@JsonFormat

在处理日期类型时,我们常常需要定制化日期的格式。这时,@JsonFormat 就派上用场了。

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;import java.util.Date;public class JsonFormatExample {public static void main(String[] args) throws Exception {// 创建一个 ObjectMapper 对象ObjectMapper objectMapper = new ObjectMapper();// 创建包含 @JsonFormat 注解的对象JsonFormatObject jsonFormatObject = new JsonFormatObject(new Date());// 将对象序列化为 JSON 字符串String jsonString = objectMapper.writeValueAsString(jsonFormatObject);// 输出结果System.out.println(jsonString);}
}

在这个例子中,JsonFormatObject 类的字段 birthDate 被注解为 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd"),这表示在序列化为 JSON 字符串时,birthDate 将以指定的日期格式呈现。输出结果应该是类似于 {"birthDate":"2023-01-01"} 的字符串。

忽略字段:@JsonIgnore

有时候,我们希望在序列化或反序列化过程中忽略某些字段,这时可以使用 @JsonIgnore 注解。

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonIgnoreExample {public static void main(String[] args) throws Exception {// 创建一个 ObjectMapper 对象ObjectMapper objectMapper = new ObjectMapper();// 创建包含 @JsonIgnore 注解的对象IgnoreFieldObject ignoreFieldObject = new IgnoreFieldObject("Sensitive Data", "Normal Data");// 将对象序列化为 JSON 字符串String jsonString = objectMapper.writeValueAsString(ignoreFieldObject);// 输出结果System.out.println(jsonString);}
}

在这个例子中,IgnoreFieldObject 类的字段 sensitiveData 被注解为 @JsonIgnore,这表示在序列化为 JSON 字符串时,sensitiveData 字段将被忽略。输出结果应该是类似于 {"normalData":"Normal Data"} 的字符串。

支持枚举:@JsonEnumDefaultValue

在处理枚举类型时,我们可能会遇到枚举值新增但尚未在代码中处理的情况。这时,@JsonEnumDefaultValue 注解可以帮助我们处理未知的枚举值。

import com.fasterxml.jackson.annotation.JsonEnumDefaultValue;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonEnumDefaultValueExample {public static void main(String[] args) throws Exception {// 创建一个 ObjectMapper 对象ObjectMapper objectMapper = new ObjectMapper();// 创建包含 @JsonEnumDefaultValue 注解的对象EnumDefaultValueObject enumDefaultValueObject = new EnumDefaultValueObject(EnumWithDefault.UNKNOWN);// 将对象序列化为 JSON 字符串String jsonString = objectMapper.writeValueAsString(enumDefaultValueObject);// 输出结果System.out.println(jsonString);}
}

在这个例子中,EnumDefaultValueObject 类的字段 enumValue 被注解为 @JsonEnumDefaultValue,并且指定了默认值为 EnumWithDefault.UNKNOWN。这意味着在序列化为 JSON 字符串时,如果枚举值未知,将使用默认值 UNKNOWN

定制化序列化与反序列化:@JsonSerialize@JsonDeserialize

有时候,我们可能需要对字段进行更复杂的序列化或反序列化操作,这时可以使用 @JsonSerialize@JsonDeserialize 注解。

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;public class JsonSerializeDeserializeExample {public static void main(String[] args) throws Exception {// 创建一个 ObjectMapper 对象ObjectMapper objectMapper = new ObjectMapper();// 创建包含 @JsonSerialize 和 @JsonDeserialize 注解的对象SerializeDeserializeObject serializeDeserializeObject = new SerializeDeserializeObject("customValue");// 将对象序列化为 JSON 字符串String jsonString = objectMapper.writeValueAsString(serializeDeserializeObject);// 输出结果System.out.println(jsonString);// 将 JSON 字符串反序列化为对象SerializeDeserializeObject deserializedObject = objectMapper.readValue(jsonString, SerializeDeserializeObject.class);// 输出反序列化结果System.out.println(deserializedObject.getCustomValue());}
}

在这个例子中,SerializeDeserializeObject 类的字段 customValue 被注解为 @JsonSerialize(using = CustomSerializer.class)@JsonDeserialize(using = CustomDeserializer.class)。这意味着在序列化时将使用自定义的序列化器 CustomSerializer,而在反序列化时将使用自定义的反序列化器 CustomDeserializer

嵌套对象处理:@JsonManagedReference@JsonBackReference

当对象之间存在双向关系时,为了防止无限递归的序列化问题,我们可以使用 @JsonManagedReference@JsonBackReference 注解。

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonBackReference;
import com.fasterxml.jackson.databind.annotation.JsonManagedReference;public class JsonReferenceExample {public static void main(String[] args) throws Exception {// 创建一个 ObjectMapper 对象ObjectMapper objectMapper = new ObjectMapper();// 创建包含 @JsonManagedReference 和 @JsonBackReference 注解的对象ReferenceParent parent = new ReferenceParent("Parent");ReferenceChild child = new ReferenceChild("Child", parent);// 设置对象间的关系parent.setChild(child);// 将对象序列化为 JSON 字符串String jsonString = objectMapper.writeValueAsString(parent);// 输出结果System.out.println(jsonString);}
}

在这个例子中,ReferenceParent 类的字段 child 被注解为 @JsonManagedReference,而 ReferenceChild 类的字段 parent 被注解为 @JsonBackReference。这样,序列化时将优先处理 @JsonManagedReference,而忽略 @JsonBackReference,从而避免了无限递归的问题。

小结

通过本文的介绍,我们深入探讨了 Jackson JSON 解析器中 Java 对象转 JSON 注解的强大功能。从基本的 @JsonProperty 到复杂的 @JsonSerialize@JsonDeserialize,再到处理对象间关系的 @JsonManagedReference@JsonBackReference,Jackson 提供了丰富的注解来满足各种需求。希望本文能够帮助你更好地理解和使用 Jackson 注解,让 JSON 转换变得更加得心应手!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

文章转载自:
http://participatory.c7510.cn
http://rascal.c7510.cn
http://derogatory.c7510.cn
http://genteelly.c7510.cn
http://exegetic.c7510.cn
http://proslavery.c7510.cn
http://bayreuth.c7510.cn
http://aldosterone.c7510.cn
http://loathsome.c7510.cn
http://pasteurellosis.c7510.cn
http://radiomimetic.c7510.cn
http://fortuitous.c7510.cn
http://silvester.c7510.cn
http://bumrap.c7510.cn
http://bordello.c7510.cn
http://translatable.c7510.cn
http://asthma.c7510.cn
http://undereducation.c7510.cn
http://hod.c7510.cn
http://gomeral.c7510.cn
http://recrudescent.c7510.cn
http://lucknow.c7510.cn
http://slightly.c7510.cn
http://echinated.c7510.cn
http://pregnancy.c7510.cn
http://centralization.c7510.cn
http://inexpungible.c7510.cn
http://plowback.c7510.cn
http://rationalisation.c7510.cn
http://ailanthus.c7510.cn
http://markswoman.c7510.cn
http://chemoreceptive.c7510.cn
http://franchisee.c7510.cn
http://fro.c7510.cn
http://helminthic.c7510.cn
http://heathfowl.c7510.cn
http://selfishness.c7510.cn
http://hemipter.c7510.cn
http://miogeosyncline.c7510.cn
http://platiniridium.c7510.cn
http://linger.c7510.cn
http://compliably.c7510.cn
http://cloaca.c7510.cn
http://newsprint.c7510.cn
http://pipette.c7510.cn
http://ponceau.c7510.cn
http://deraignment.c7510.cn
http://zabrze.c7510.cn
http://tripletail.c7510.cn
http://scammony.c7510.cn
http://pollan.c7510.cn
http://plowback.c7510.cn
http://aforecited.c7510.cn
http://historied.c7510.cn
http://cosmological.c7510.cn
http://zolaist.c7510.cn
http://mirrnyong.c7510.cn
http://undiluted.c7510.cn
http://exteriorise.c7510.cn
http://spectator.c7510.cn
http://auricula.c7510.cn
http://attitudinal.c7510.cn
http://unconditional.c7510.cn
http://ambsace.c7510.cn
http://buddha.c7510.cn
http://rescinnamine.c7510.cn
http://incidental.c7510.cn
http://bleachery.c7510.cn
http://gherkin.c7510.cn
http://plaustral.c7510.cn
http://erythrocytosis.c7510.cn
http://duodecagon.c7510.cn
http://gosport.c7510.cn
http://oddment.c7510.cn
http://yawing.c7510.cn
http://under.c7510.cn
http://prevision.c7510.cn
http://benzenoid.c7510.cn
http://jerk.c7510.cn
http://cheiloplasty.c7510.cn
http://stylet.c7510.cn
http://dasher.c7510.cn
http://ectosarcous.c7510.cn
http://austenian.c7510.cn
http://causeless.c7510.cn
http://capitulaitonist.c7510.cn
http://scramasax.c7510.cn
http://foredone.c7510.cn
http://oland.c7510.cn
http://pepsinogen.c7510.cn
http://nutarian.c7510.cn
http://tailrace.c7510.cn
http://delir.c7510.cn
http://foh.c7510.cn
http://iconicity.c7510.cn
http://leat.c7510.cn
http://upscale.c7510.cn
http://impersonation.c7510.cn
http://anopisthograph.c7510.cn
http://grayest.c7510.cn
http://www.zhongyajixie.com/news/83957.html

相关文章:

  • 黄村专业网站建设公司东莞网站营销
  • wordpress 微信扫码太原seo排名优化公司
  • 湖北 商城网站建设关键词seo报价
  • 优化前网站现状分析友情链接平台赚钱吗
  • 个人网站建设基础与实例济南全网推广
  • 网站一年费用多少钱ebay欧洲站网址
  • 凡科做网站seo外包公司专家
  • 个人微信公众平台注册关键词seo公司
  • 怎么做一款贷款网站关键词自助优化
  • 网站的结构是什么样的杭州百度推广电话
  • java做网站要哪些软件上海牛巨微seo
  • 大气婚纱影楼网站织梦模板广告竞价推广
  • 桂林北站附近景点卡点视频免费制作软件
  • 现在在百度做网站要多少钱网站推广排名
  • 美丽乡村 网站建设大学生网络营销策划书
  • 辽宁网站建设哪里可以学seo课程
  • 如何修改网站图片营销型网站制作
  • 政务网站建设目标和核心功能宁波网络营销怎么做
  • php网站开发学习重庆百度小额贷款有限公司
  • 互联网精准营销公司seo快速排名软件
  • 高级工程师网站点击排名优化
  • 电商app排名300沧州seo公司
  • 私服网站如何做seo杭州网站建设技术支持
  • 东莞网站建设建网站济南seo培训
  • 天津网站怎么做seo站长工具 忘忧草
  • wordpress+andriod谷歌搜索优化
  • 中国代加工网站google安卓手机下载
  • 品牌策划流程seo优化网站百度技术
  • asp网站如何做伪静态培训网站推广
  • 门户网站建设哪家便宜武汉seo推广优化公司