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

Java处理JSON编程实用技巧

以下是2025–2026年视角下,Java 处理 JSON最实用、最常被用到的技巧汇总(主要基于目前最主流的几种库)。

目前主流选择排序(推荐优先级):

排名推荐场景性能活跃度Spring Boot 3.x 默认
1Jackson企业级、复杂对象、Spring全家桶★★★★★★★★★★
2Fastjson2追求极致性能、对安全性要求不高场景★★★★★★★★★☆
3GsonAndroid、轻量简单场景★★★★☆★★★★☆
4JSON-B纯Jakarta EE 项目、标准★★★☆☆★★★☆☆部分

1. 最推荐的现代依赖(2025-2026主流写法)

<!-- Jackson(强烈推荐) --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.17.2</version><!-- 或更新版本 --></dependency><!-- 如果需要JDK17+记录类、虚拟记录等支持 --><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jdk17</artifactId><version>2.17.2</version></dependency><!-- Fastjson2(性能党选择) --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.50</version><!-- 关注安全公告 --></dependency><!-- Gson(轻量选择) --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.11.0</version></dependency>

2. 最高频实用技巧清单(带代码)

技巧1:优雅处理 LocalDateTime / Instant(最痛点之一)
// Jackson 推荐写法(全局配置一次即可)ObjectMappermapper=JsonMapper.builder().addModule(newJavaTimeModule())// 支持 java.time.*.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build();// 或使用注解(更精细控制)publicclassOrder{@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")privateLocalDateTimecreateTime;@JsonFormat(pattern="yyyy-MM-dd")privateLocalDatedeliveryDate;}

Fastjson2 等价写法:

JSONWriter.Feature.WriteDateUseDateFormat,JSONWriter.Feature.WriteLocalDateTimeAsString
技巧2:忽略 null 值 & 空集合(减小报文体积)
// Jacksonmapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);// null不输出mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);// 空集合/空串不输出// 字段级别@JsonInclude(JsonInclude.Include.NON_NULL)privateStringremark;
技巧3:字段名风格自动转换(最常用场景)
// Jackson - snake_case ↔ camelCasemapper.registerModule(newSimpleModule().addSerializer(String.class,newPropertyNamingStrategies.SnakeCaseStrategy()...));// 或全局配置(Spring Boot常用)@BeanpublicObjectMapperobjectMapper(){returnJsonMapper.builder().propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE).build();}
技巧4:处理未知字段不报错(向前兼容神器)
// Jacksonmapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);// Fastjson2JSONReader.Feature.IgnoreAutoTypeNotMatch,JSONReader.Feature.ErrorOnUnknown
技巧5:泛型集合反序列化(最容易出错的地方)
// Jackson 推荐写法List<User>users=mapper.readValue(json,mapper.getTypeFactory().constructCollectionType(List.class,User.class));// 更复杂的嵌套泛型Map<String,List<User>>data=mapper.readValue(json,newTypeReference<>(){});

Gson 等价:

Typetype=newTypeToken<List<User>>(){}.getType();List<User>users=gson.fromJson(json,type);
技巧6:超大 JSON → 流式处理(内存杀手克星)
// Jackson 流式读取(推荐)try(JsonParserparser=mapper.createParser(hugeJsonInputStream)){while(parser.nextToken()!=null){if(parser.currentToken()==JsonToken.FIELD_NAME){Stringfield=parser.getCurrentName();if("orders".equals(field)){parser.nextToken();// 进入数组while(parser.nextToken()!=JsonToken.END_ARRAY){Orderorder=mapper.readValue(parser,Order.class);// 逐条处理}}}}}
技巧7:JSON Patch / JSON Merge Patch(声明式修改)
// Jackson 支持 RFC 6902JsonNodepatchNode=mapper.readTree(patchJson);ObjectMappermapperWithPatch=JsonMapper.builder().build();JsonNodetarget=mapperWithPatch.readerFor(User.class).with(newJsonPatch(patchNode)).readValue(originalUserJson);
技巧8:快速脱敏 / 过滤敏感字段(合规必备)
// Jackson 方式一:@JsonFilter@JsonFilter("sensitiveFilter")publicclassUser{...}// 方式二:自定义 SerializerpublicclassMaskPhoneSerializerextendsStdSerializer<String>{@Overridepublicvoidserialize(Stringvalue,JsonGeneratorgen,SerializerProviderp){if(value!=null&&value.length()==11){gen.writeString(value.substring(0,3)+"****"+value.substring(7));}}}
技巧9:Fastjson2 高性能实用配置(追求极致时用)
JSONWriterjsonWriter=JSONWriter.ofUTF8().setFeatures(JSONWriter.Feature.WriteNullsAsEmptyString,JSONWriter.Feature.PrettyFormatIfLengthGt512,JSONWriter.Feature.NotWriteDefaultValue);

快速选择建议表(2026视角)

你最在意的点推荐库次选
Spring Boot 3.x 项目Jackson
最高性能Fastjson2Jackson
Android 开发GsonFastjson2
内存极度敏感 + 大JSONJackson Stream
代码最少、最简单GsonFastjson2
需要严格标准合规JSON-B / Jackson

你目前项目用的是哪个库?或者主要痛点是什么(日期、泛型、性能、内存、字段风格……)?可以讲得更具体一些,我可以给你更针对性的写法。

http://www.jsqmd.com/news/442358/

相关文章:

  • 上海有哪些专业做力学仿真服务的公司? - 冠顶工业设备
  • 2026年靠谱的职业院校心理咨询室方案公司推荐:职业院校心理咨询室仪器/职业院校心理咨询室采购清单行业公司推荐 - 品牌宣传支持者
  • 工业领域故障诊断模型深度解析
  • 2026年比较好的职业院校心理咨询室方案品牌推荐:职业院校心理咨询室实施方案/职业院校心理咨询室建设方案/职业院校心理咨询室采购清单品牌公司推荐 - 品牌宣传支持者
  • MYSQL基础(大模型基础准备2/3)
  • 2026年质量好的医院心理科设备品牌推荐:医院心理科设备配置标准行业公司推荐 - 品牌宣传支持者
  • 读2025世界前沿技术发展报告03信息技术及产业发展(下)
  • 2026年热门的三缸雪融机厂家推荐:单缸雪融机/全自动雪融机品牌厂家推荐 - 品牌宣传支持者
  • 2026年靠谱的医院心理科设备清单品牌推荐:医院心理科设备采购/医院心理科设备功能介绍/医院心理科设备整体解决方案人气公司推荐 - 品牌宣传支持者
  • 2026年热门的雪融机厂家推荐:三缸雪融机/不锈钢雪融机厂家选择指南 - 品牌宣传支持者
  • 2026年靠谱的特殊学校心理辅导室建设仪器品牌推荐:特殊学校心理辅导室建设方案/特殊学校心理辅导室建设标准/特殊学校心理辅导室建设整体解决方案优质公司推荐 - 品牌宣传支持者
  • 2026年官方八方电子招投标平台湖北公司推荐:湖北八方电子招投标平台口碑优选公司 - 品牌宣传支持者
  • 2026年比较好的特殊学校心理辅导室建设公司推荐:特殊学校心理辅导室建设方案/特殊学校心理辅导室建设设备/特殊学校心理辅导室建设整体解决方案年度精选公司 - 品牌宣传支持者
  • 【课程设计/毕业设计】Java家政预约管理系统源码+开发文档+运行步骤+计算机专业
  • 2026年官方电子招投标平台公司推荐:八方电子招投标平台/八方电子招投标平台湖北/八方电子招投标平台湖北专区人气公司推荐 - 品牌宣传支持者
  • SQL Server数据库服务器内存问题排查
  • 2026年比较好的立式冰淇淋机品牌推荐:全自动冰淇淋机可靠供应商推荐 - 品牌宣传支持者
  • AI可以做广告吗?联系哪家公司 - 品牌2026
  • 2026年靠谱的冰淇淋机公司推荐:三色冰淇淋机/商用冰淇淋机/全自动冰淇淋机品牌厂家推荐 - 品牌宣传支持者
  • 零代码后端平台 XinServer 的结构拆解
  • 2026长沙小红书服务商实测|本地种草不踩坑,真实适配指南 - 亿仁imc
  • 2026年国内口碑好的不锈钢水箱板成型液压机生产线厂家推荐榜单,液压机生产线/水箱板冲压成型/不锈钢板压制成型/自动化生产线集成,不锈钢水箱板成型液压机制造企业有哪些 - 品牌推广师
  • 结伴练瑜伽,氛围感拉满|武汉瑜伽团课,禧悦解锁轻松集体练习新体验 - 冠顶工业设备
  • RA6E2基础-RTC时钟与日历介绍及利用
  • Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
  • 2026年口碑好的立式装盒机工厂推荐:食品装盒机/广东装盒机/全自动装盒机优质供应商推荐 - 品牌宣传支持者
  • MongoDB 读写关注设置:一致性与性能的黄金平衡法则
  • 2026年口碑好的喷胶封口装盒机厂家推荐:多功能自动装盒机直销厂家推荐 - 品牌宣传支持者
  • AI广告推广如何选择服务商?怎么联系这些公司 - 品牌2026
  • 2026长沙GEO优化公司实测|精准圈客不浪费,本地服务商真实盘点 - 亿仁imc