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

字符串过长导致编译报错的问题及解决办法 - 详解

1、背景

一次在需要把一个比较大的json字符串转换为一个集合,当时没有考虑直接用字符串去定义,在编译的时候,控制台提示“字符串长度过长”,编译报错了。

2、解决方案

后面把这个大的json放到一个json文件中,然后去读取这个文件的内容,再把他转换为对应的集合。

3、实现方式

com.fasterxml.jackson.corejackson-databind2.13.0 

com.fasterxml.jackson.corejackson-core2.13.0

com.fasterxml.jackson.corejackson-annotations2.13.0
方式一:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature; // 关键类
import java.io.File;
import java.io.IOException;
import java.util.List;
public class DepartmentJsonParser {// 关键:配置ObjectMapper忽略未识别的JSON字段private static final ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);// 禁用“未知属性报错”,改为忽略public List parseJsonFromFile(String filePath) throws IOException {return objectMapper.readValue(new File(filePath),new TypeReference>() {} // 泛型类型引用,确保解析为List);}public static void main(String[] args) {try {DepartmentJsonParser parser = new DepartmentJsonParser();// 注意:文件路径建议用绝对路径,避免相对路径找不到文件(比如D:/data/departments.json)List departments = parser.parseJsonFromFile("D:/departments.json");System.out.println("解析成功,共 " + departments.size() + " 个部门");} catch (IOException e) {e.printStackTrace();// 建议补充日志打印,方便定位问题(如文件不存在、JSON格式错误)System.err.println("解析失败:" + e.getMessage());}}
}
方式二:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature; // 关键类
import java.io.File;
import java.io.IOException;
import java.util.List;
public class DepartmentJsonParser {// 关键:配置ObjectMapper忽略未识别的JSON字段private static final ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);public static void main(String[] args) {try {// 读取resources目录下的departments.json(工程化推荐)InputStream is = DepartmentJsonParser.class.getClassLoader().getResourceAsStream("departments.json");List departments = objectMapper.readValue(is, new TypeReference>() {});System.out.println("解析成功,共 " + departments.size() + " 个部门");} catch (IOException e) {e.printStackTrace();// 建议补充日志打印,方便定位问题(如文件不存在、JSON格式错误)System.err.println("解析失败:" + e.getMessage());}}
}

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

相关文章:

  • 厨房电秤方案:介绍一款电子秤芯片sic8632
  • CodeForces-1183F Topforces Strikes Back
  • Excel 实现下拉多选功能
  • CF981F Round Marriage
  • macOS直接使用pip安装报错
  • 2025 年最新螺旋地桩厂家推荐排行榜:聚焦光伏大棚等场景,甄选优质实力企业桩尖/大棚/组合/地螺丝螺旋地桩厂家推荐
  • CodeForces-1620D Exact Change
  • Python爬虫:获取某平台数据的下载链接 - 指南
  • 厨房电子秤芯片方案:SIC8632
  • 《借力JBoltAI框架,Java技术开发公司开启高效开发新范式》
  • Wireshark抓包教程:JSON和HTTPS抓取
  • 贡献法算法思维
  • 白鲸开源数据基建平台荣登“创客北京 2025”企业组TOP150,共同助 Agentic AI 行业变革
  • ORACLE检查并创建表空间和表分区
  • 让cherry studio访问使用Docket Desktop中的Docker Model Runner运行的模型
  • 禁用内核模块,是否需要执行脚本 $ sudo update-initramfs -u $ sudo update-grub ? - 详解
  • 2025 年东莞钢结构厂房施工公司最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析
  • 高性能AI股票预测分析报告 - 2025年10月23日
  • 2025 年电子万能试验机生产厂家最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析
  • Spring AI Alibaba Admin 正式开源!!
  • snack4-jsonpath v4.0.2 发布
  • SMARTFORMS去掉数值后面的小数点
  • 089_尚硅谷_switch的课堂练习
  • SQL SERVER死锁查询,死锁分析,解锁,查询占用
  • 自定义组件中监听properties里面的属性的方法里面去取另外的properties里面的属性拿不到值的问题
  • 数字征程,逐级而上;生态协同,智绘新篇—— 艾拓琪威灏 与 哲讯顺维 数字化战略合作签署暨CRMMES项目启动会隆重举行
  • 嵌入式主板全景解析:从选型到趋势,读懂工业智能的核心载体
  • 2025 年唐山油漆生产厂家最新推荐榜单:精选优质企业,解析专业品牌选购指南唐山油漆批发/唐山油漆生产公司推荐
  • 做题笔记21
  • 权威调研榜单:重庆旧房加层改造公司TOP3榜单好评深度解析