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

Java中从JSON格式字符串提取列名并生成制表符分隔字符串

提取JSON字符串中的列名并拼接为制表符分隔的字符串

嘿,这个需求很常见,我给你几个实用的实现方案,你可以根据项目的依赖情况来选:

方案一:用Jackson库(推荐,Java生态最常用的JSON处理工具)

Jackson是Java里处理JSON的首选工具,功能强大还好用。首先得给项目加个Jackson依赖:

如果是Maven项目,在pom.xml里添加:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 用最新稳定版就行 -->
</dependency>

然后写代码实现:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class ColumnExtractor {
    public static void main(String[] args) throws Exception {
        String val = "{\"column\":[{\"name\":\"id,\",\"type\":\"int\"},{\"name\":\"empname\",\"type\":\"string\"}], \"database\":\"test\",\"table\":\"sample\"}";
        
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(val);
        JsonNode columnsNode = rootNode.get("column");
        
        StringBuilder result = new StringBuilder();
        for (JsonNode column : columnsNode) {
            // 加trim是为了处理你输入里"id,"多出来的逗号,实际JSON没问题可以去掉
            String name = column.get("name").asText().trim();
            if (result.length() > 0) {
                result.append("\t"); // 用制表符分隔列名
            }
            result.append(name);
        }
        
        System.out.println(result.toString()); // 输出:id	empname
    }
}

方案二:用org.json轻量库

要是不想引入Jackson这么大的依赖,用轻量级的org.json库也能搞定,体积小,足够处理这个需求。

Maven依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20230618</version> <!-- 最新稳定版 -->
</dependency>

代码示例:

import org.json.JSONArray;
import org.json.JSONObject;

public class ColumnExtractor {
    public static void main(String[] args) {
        String val = "{\"column\":[{\"name\":\"id,\",\"type\":\"int\"},{\"name\":\"empname\",\"type\":\"string\"}], \"database\":\"test\",\"table\":\"sample\"}";
        
        JSONObject rootObj = new JSONObject(val);
        JSONArray columnsArray = rootObj.getJSONArray("column");
        
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < columnsArray.length(); i++) {
            JSONObject columnObj = columnsArray.getJSONObject(i);
            String name = columnObj.getString("name").trim();
            if (i > 0) {
                result.append("\t");
            }
            result.append(name);
        }
        
        System.out.println(result.toString());
    }
}

方案三:不使用第三方库(Java 11+,用javax.json)

要是项目不能加任何第三方依赖,且你用的是Java 11及以上,可以用Java EE的javax.json API(普通Java SE项目可能需要手动加依赖)。

Maven依赖:

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1.4</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
</dependency>

代码示例:

import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.StringReader;

public class ColumnExtractor {
    public static void main(String[] args) {
        String val = "{\"column\":[{\"name\":\"id,\",\"type\":\"int\"},{\"name\":\"empname\",\"type\":\"string\"}], \"database\":\"test\",\"table\":\"sample\"}";
        
        try (JsonReader reader = Json.createReader(new StringReader(val))) {
            JsonObject rootObj = reader.readObject();
            JsonArray columnsArray = rootObj.getJsonArray("column");
            
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < columnsArray.size(); i++) {
                JsonObject columnObj = columnsArray.getJsonObject(i);
                String name = columnObj.getString("name").trim();
                if (i > 0) {
                    result.append("\t");
                }
                result.append(name);
            }
            
            System.out.println(result.toString());
        }
    }
}

小提醒

你给的原始JSON里"name":"id,"多了个逗号,所以代码里加了trim()处理这个情况,如果实际业务里的JSON没有这类小问题,可以去掉trim()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:20:28