首页 > 解决方案 > 将 csv 数据字符串转换为 json - Java - Play 框架

问题描述

我正在尝试将 csv 数据字符串转换为 java 中的 json。
这是csv数据

id ,CodeName,BattleRequired,AwakenDescription,HPBarAsset,Rarity,ElementType,BaseStar,BaseLevel,UnlockCurrency,UnlockCost,UpgradeDEFFactor,UpgradeATKFactor,UpgradeHPFactor,MP,AttackId,AwakenId,SkillId,ChargeMechanicId,Role,TotalLevel,EnhanceCurrency,LevelUpCurrency,Star,EnhanceCost,LevelUpCost,Level,BaseHP,BaseAttack,BaseDefense,BaseAttackSpeed,CriticalRate,CriticalMultiplier,CauseStatusEffect,ResistStatusEffect,ShieldDefense,MovementSpeed,AggroRange,AttackRange,EvadeChance,LifeSteal,DamageReflection,AOEEvadeChance,CounterAttackChance,CounterAttackMultiplier,BaseCharge,MaxCharge,ScaleValue
4,Knight,50,,HPBarGreen,Epic,Light,1,1,Knight_Light_Shard,30,"0,4,8,12,17","0,6,13,19,26","0,51,102,153,204",80,16,,"54,55,6",29,"Summoner,Knight",120,Knight_Light_Shard,Gold,1,30,1,300,852,107,69,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,0.8
,,,,,,,,,,,,,,,,,,,,,,,2,50,2,373,877,110,71,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,3,125,3,446,902,113,73,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,4,240,4,518,927,116,75,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,5,425,5,591,952,119,77,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,,,6,664,977,122,79,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,,,7,737,1002,125,81,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,,,8,809,1027,128,83,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,,,9,882,1052,131,85,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,
,,,,,,,,,,,,,,,,,,,,,,,,,10,955,1077,134,87,2.25,8.50,150.0,15,15,0,8.00,8,1.5,0,0,0,1,0,0.8,0,3,

我想要输出 JSON 格式。
是否有将 CSV(或 XLS)文件转换为 JSON 对象的开源 Java 库?
你有什么建议吗?Tks

标签: javajsoncsv

解决方案


您可以使用 fasterxml.jackson 库来做到这一点

   File input = new File("input.csv");
  try {
     CsvSchema csv = CsvSchema.emptySchema().withHeader();
     CsvMapper csvMapper = new CsvMapper();
     MappingIterator<Map<?, ?>> mappingIterator =  csvMapper.reader().forType(Map.class).with(csv).readValues(input);
     List<Map<?, ?>> list = mappingIterator.readAll();
     System.out.println(list);
  } catch(Exception e) {
     e.printStackTrace();
  }

你必须添加 jackson-dataformat-csv 和 jackson-databind JAR 作为依赖项

编辑:如果输入是字符串,您可以传递字符串而不是文件


推荐阅读