You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8实现CSV转JSON功能现有代码运行异常,求排查解决思路

问题排查与解决思路

核心错误点

你的代码存在4个致命逻辑错误,导致无法输出正确结果:

  • 未读取CSV文件内容:你直接把文件路径字符串传入转换方法,根本没有读取CSV的实际内容,处理的对象从根上就错了
  • 行拆分逻辑错误:你用逗号直接拆分整个输入串,而非先按换行符拆分得到每行数据,完全打乱了CSV的行结构
  • 字段拆分逻辑错误:你使用CSV里不存在的特殊字符۞拆分字段,还提前删除了所有逗号,根本无法正确拆分每行的三个字段
  • 边界处理风险:手动拼接JSON的逻辑有概率生成多余逗号,不符合JSON语法规范

修正后的实现代码

package com.beandependencyinjection.configurationbeans.service;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class ConvertCsvToJson {
    public static void main(String[] args) throws IOException {
        String filePath = "C:\\products\\swproduct.csv";
        // 先读取CSV文件的实际内容
        String csvContent = Files.readString(Paths.get(filePath));
        ConvertCsvToJson converter = new ConvertCsvToJson();
        System.out.println(converter.CSVtoJSON(csvContent));
    }

    public String CSVtoJSON(String csvContent) {
        // 按换行符拆分得到所有行,兼容Windows、Linux、Mac的换行格式
        String[] lines = csvContent.split("\\R");
        if (lines.length == 0) return "[]";
        
        StringBuilder builder = new StringBuilder();
        builder.append('[');
        // 第一行是表头,按逗号拆分后去空格
        String[] headers = lines[0].trim().split(",");

        // 从第二行开始遍历数据行
        for (int i = 1; i < lines.length; i++) {
            String currentLine = lines[i].trim();
            if (currentLine.isEmpty()) continue; // 跳过空行
            // 拆分当前行的字段
            String[] values = currentLine.split(",");
            builder.append('{');
            for (int j = 0; j < headers.length; j++) {
                // 拼接键值对,自动处理行字段不足的场景
                builder.append("\"").append(headers[j].trim()).append("\":\"")
                        .append(j < values.length ? values[j].trim() : "").append("\"");
                if (j != headers.length - 1) {
                    builder.append(',');
                }
            }
            builder.append('}');
            if (i != lines.length - 1) {
                builder.append(',');
            }
        }
        builder.append(']');
        return builder.toString();
    }
}

优化建议

如果是生产环境使用,推荐直接用成熟的第三方库处理,避免手动处理的边界问题:

  • CSV解析用OpenCSV,可以自动处理字段含逗号、引号、换行等特殊字符的场景
  • JSON序列化用Jackson或Gson,不用手动拼接字符串,完全避免JSON语法错误

内容的提问来源于stack exchange,提问作者Indranil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:06:04