有没有办法在将大型CSV文件转换为JSON时解决Java堆内存错误?

huangapple 未分类评论46阅读模式
英文:

Is there any way I can resolve java heap memory error when converting a large csv file to JSON?

问题

  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.util.List;
  4. import java.util.Map;
  5. import com.fasterxml.jackson.databind.MappingIterator;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.dataformat.csv.CsvMapper;
  8. import com.fasterxml.jackson.dataformat.csv.CsvSchema;
  9. public class JacksonProgram {
  10. public static void main(String[] args) throws Exception {
  11. File input = new File("C:\\Users\\shivamurthym\\Downloads\\FL_insurance_sample\\FL_insurance_sample.csv");
  12. File output = new File("C:\\Users\\shivamurthym\\data.json");
  13. List<Map<?, ?>> data = readObjectsFromCsv(input);
  14. writeAsJson(data, output);
  15. }
  16. public static List<Map<?, ?>> readObjectsFromCsv(File file) throws IOException {
  17. CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
  18. CsvMapper csvMapper = new CsvMapper();
  19. MappingIterator<Map<?, ?>> mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file);
  20. return mappingIterator.readAll();
  21. }
  22. public static void writeAsJson(List<Map<?, ?>> data, File file) throws IOException {
  23. ObjectMapper mapper = new ObjectMapper();
  24. mapper.writeValue(file, data);
  25. }
  26. }
英文:

I'm writing the below to convert CSV file to JSON but getting java heap memory error.

Can anyone help me to write using the Jackson stream API?

  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.util.List;
  4. import java.util.Map;
  5. import com.fasterxml.jackson.databind.MappingIterator;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.dataformat.csv.CsvMapper;
  8. import com.fasterxml.jackson.dataformat.csv.CsvSchema;
  9. public class JacksonProgram {
  10. public static void main(String[] args) throws Exception {
  11. File input = new File(&quot;C:\\Users\\shivamurthym\\Downloads\\FL_insurance_sample\\FL_insurance_sample.csv&quot;);
  12. File output = new File(&quot;C:\\Users\\shivamurthym\\data.json&quot;);
  13. List&lt;Map&lt;?, ?&gt;&gt; data = readObjectsFromCsv(input);
  14. writeAsJson(data, output);
  15. }
  16. public static List&lt;Map&lt;?, ?&gt;&gt; readObjectsFromCsv(File file) throws IOException {
  17. CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
  18. CsvMapper csvMapper = new CsvMapper();
  19. MappingIterator&lt;Map&lt;?, ?&gt;&gt; mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file);
  20. return mappingIterator.readAll();
  21. }
  22. public static void writeAsJson(List&lt;Map&lt;?, ?&gt;&gt; data, File file) throws IOException {
  23. ObjectMapper mapper = new ObjectMapper();
  24. mapper.writeValue(file, data);
  25. }
  26. }

huangapple
  • 本文由 发表于 2020年4月9日 20:01:28
  • 转载请务必保留本文链接:https://java.coder-hub.com/61120699.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定