当前位置:   article > 正文

JSON转CSV:使用Java处理复杂数据结构

JSON转CSV:使用Java处理复杂数据结构

引言

在数据处理和分析的世界中,经常需要将数据从一种格式转换为另一种更便于处理或分析的格式。本文将详细介绍如何使用Java语言,配合Jackson和Apache Commons CSV库,将嵌套的JSON数据转换成CSV格式。这种技能在数据科学、软件开发和系统集成等领域非常有用。

准备工作

首先,确保你的Java项目中引入了必要的库。如果你使用Maven作为项目管理工具,可以在pom.xml文件中添加以下依赖:

xml

  1. <!-- Jackson for JSON processing -->
  2. <dependency>
  3. <groupId>com.fasterxml.jackson.core</groupId>
  4. <artifactId>jackson-databind</artifactId>
  5. <version>2.12.3</version>
  6. </dependency>
  7. <!-- Apache Commons CSV for CSV writing -->
  8. <dependency>
  9. <groupId>org.apache.commons</groupId>
  10. <artifactId>commons-csv</artifactId>
  11. <version>1.8</version>
  12. </dependency>

示例JSON文件

假设我们有一个名为response.json的文件,其内容如下:

json

  1. {
  2. "code": 0,
  3. "data": {
  4. "page": {
  5. "prePage": 1,
  6. "nextPage": 1,
  7. "pageNo": 1,
  8. "pageSize": 10,
  9. "totalPage": 1,
  10. "totalCount": 10
  11. },
  12. "statList": [
  13. {
  14. "statDate": "2023-12-31",
  15. // 其他字段
  16. }
  17. // 更多数据项...
  18. ]
  19. }
  20. }

Java代码实现

我们的目标是读取statList中的数据,并将其转换为CSV格式。下面是完整的Java代码实现:

java

  1. import com.fasterxml.jackson.databind.JsonNode;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import org.apache.commons.csv.CSVFormat;
  4. import org.apache.commons.csv.CSVPrinter;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. public class JsonToCsvConverter {
  11. public static void main(String[] args) {
  12. String jsonFilePath = "response.json";
  13. String csvFilePath = "output.csv";
  14. ObjectMapper mapper = new ObjectMapper();
  15. try (FileReader fileReader = new FileReader(jsonFilePath);
  16. FileWriter fileWriter = new FileWriter(csvFilePath);
  17. CSVPrinter csvPrinter = new CSVPrinter(fileWriter, CSVFormat.DEFAULT.withHeader(
  18. "statDate", "platformName", "pageName", "positionName", "productionName", "orderName",
  19. "orgName", "inventory", "backendExposurePv", "fillRate", "frontExposurePv", "clickPv",
  20. "backendClickPv", "clickRate", "orderType"))) {
  21. JsonNode rootNode = mapper.readTree(fileReader);
  22. JsonNode dataNode = rootNode.path("data");
  23. JsonNode statList = dataNode.path("statList");
  24. int count = 0;
  25. if (statList.isArray()) {
  26. for (JsonNode node : statList) {
  27. List<String> csvData = new ArrayList<>();
  28. // 添加数据到csvData列表
  29. csvData.add(node.path("statDate").asText(""));
  30. // ... 其他字段处理
  31. csvPrinter.printRecord(csvData);
  32. count++;
  33. }
  34. }
  35. csvPrinter.flush();
  36. System.out.println("CSV文件已生成!");
  37. System.out.println("原始数据中共有 " + count + " 条数据。");
  38. } catch (IOException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }

结论

通过上述步骤,我们不仅学会了如何处理和转换嵌套的JSON数据,还确保了数据的完整性和灵活性。这种技能对于处理复杂的数据结构非常重要,可以广泛应用于多种业务和技术场景中。

后续步骤

为了进一步提高效率和可读性,可以考虑添加异常处理和数据验证的逻辑,确保在处理大量或复杂数据时的健壮性。

如果你有任何问题或需要进一步的帮助,请随时留言或联系我。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/517884
推荐阅读
相关标签