0

I'm trying to convert csv data string to json in java.
Here is csv data

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,

I want output JSON format.
Is there an open source java library to convert a CSV (or XLS) file to a JSON object?
Do you have any suggestions? Tks

DucAnh
  • 3
  • 2

1 Answers1

0

You can do this with fasterxml.jackson library

   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();
  }

U have to add jackson-dataformat-csv and jackson-databind JAR as dependency

Edit: In case input is String, you can pass String instead of file

Dijesh
  • 334
  • 2
  • 11