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

如何在Java中实现JSON转固定长度平面文件?有哪些可用类库?

Java实现JSON转固定宽度平面文件的常用方案

可选类库

  • 基础组合方案:Jackson/Gson(解析JSON) + Apache Commons Lang(处理字符串固定长度补位)
    适合需求简单的场景,学习成本低,不需要引入额外的重型框架
  • JRecord:专门处理平面文件的专用类库,原生支持固定宽度字段规则配置,支持字段对齐、填充字符自定义、不同编码处理等进阶需求
  • Spring Batch FixedLengthFieldExtractor:如果你项目本身用Spring技术栈,可直接用Spring Batch提供的固定宽度文件生成组件,不需要额外引入依赖

最简实现示例(Jackson + Apache Commons Lang)

首先引入依赖(Maven格式):

<!-- Jackson 解析JSON -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
<!-- Commons Lang 处理字符串补位 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.14.0</version>
</dependency>

示例代码:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import java.io.FileWriter;
import java.io.IOException;

public class FixedWidthGenerator {
    public static void main(String[] args) throws IOException {
        // 1. 解析JSON文件
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(FixedWidthGenerator.class.getResourceAsStream("/input.json"));
        JsonNode employeeNode = rootNode.get("employee");

        // 2. 按规则处理每个字段:左对齐,不足长度用'-'填充
        String name = StringUtils.rightPad(employeeNode.get("name").asText(), 10, '-');
        String salary = StringUtils.rightPad(employeeNode.get("salary").asText(), 5, '-');

        // 3. 拼接后写入文件
        String result = name + salary;
        try (FileWriter writer = new FileWriter("output.txt")) {
            writer.write(result);
        }
    }
}

上述代码运行后生成的output.txt内容和你示例要求完全一致。

注意事项

  • 如果需要右对齐的固定宽度,可以把StringUtils.rightPad替换为StringUtils.leftPad
  • 填充字符可根据需求自定义,比如空格、0等
  • 字段顺序需要你自己按照业务要求指定,避免JSON字段顺序变化导致输出错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 10:51:04