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

如何从Java返回的HTTP响应JSON中提取Suggestions的Text字段?

嘿,我来给你分享几个在Java里提取目标JSON中Suggestions数组内Text字段值的实用方案,都是日常项目里常用的:

方案1:用Jackson库(Spring项目首选)

Jackson是Java生态里最流行的JSON处理库之一,Spring框架默认也依赖它,结构化解析非常方便。

首先引入Maven依赖(用最新稳定版即可):

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

先定义和JSON结构匹配的POJO类,让解析逻辑更清晰:

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

// 最外层响应类
class TextResultResponse {
    @JsonProperty("LightGingerTheTextResult")
    private List<TextResultItem> resultItems;

    // Getter & Setter
    public List<TextResultItem> getResultItems() {
        return resultItems;
    }

    public void setResultItems(List<TextResultItem> resultItems) {
        this.resultItems = resultItems;
    }
}

// 单个结果项
class TextResultItem {
    private List<Suggestion> Suggestions;

    // Getter & Setter
    public List<Suggestion> getSuggestions() {
        return Suggestions;
    }

    public void setSuggestions(List<Suggestion> suggestions) {
        Suggestions = suggestions;
    }
}

// 建议项
class Suggestion {
    private String Text;

    // Getter & Setter
    public String getText() {
        return Text;
    }

    public void setText(String text) {
        Text = text;
    }
}

接下来是解析提取的核心代码,注意加空值判断避免空指针:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.List;

public class JacksonParserDemo {
    public static void main(String[] args) {
        String targetJson = "{ \"LightGingerTheTextResult\": [ { \"Confidence\": 4, \"From\": 0, \"LrnFrg\": null, \"LrnFrgOrigIndxs\": [], \"Mistakes\": [ { \"CanAddToDict\": false, \"From\": 0, \"To\": 0 } ], \"ShouldReplace\": true, \"Suggestions\": [ { \"LrnCatId\": 12, \"Text\": \"An\" }, { \"LrnCatId\": 45, \"Text\": \"A\" } ], \"To\": 0, \"TopLrnCatId\": 12, \"Type\": 3, \"UXFrgFrom\": 0, \"UXFrgTo\": 6 } ] }";

        ObjectMapper objectMapper = new ObjectMapper();
        List<String> suggestionTexts = new ArrayList<>();

        try {
            TextResultResponse response = objectMapper.readValue(targetJson, TextResultResponse.class);
            if (response.getResultItems() != null && !response.getResultItems().isEmpty()) {
                TextResultItem firstItem = response.getResultItems().get(0);
                if (firstItem.getSuggestions() != null && !firstItem.getSuggestions().isEmpty()) {
                    for (Suggestion s : firstItem.getSuggestions()) {
                        if (s.getText() != null) {
                            suggestionTexts.add(s.getText());
                        }
                    }
                }
            }
            // 输出结果:[An, A]
            System.out.println(suggestionTexts);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方案2:用Gson库(轻量灵活,适合快速开发)

Gson是Google出品的JSON库,语法简洁,支持无POJO的原生解析,适合临时场景。

先引入Maven依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

方式一:POJO结构化解析

可以复用上面的POJO类,直接解析:

import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

public class GsonPojoDemo {
    public static void main(String[] args) {
        String targetJson = "{ \"LightGingerTheTextResult\": [ { \"Confidence\": 4, \"From\": 0, \"LrnFrg\": null, \"LrnFrgOrigIndxs\": [], \"Mistakes\": [ { \"CanAddToDict\": false, \"From\": 0, \"To\": 0 } ], \"ShouldReplace\": true, \"Suggestions\": [ { \"LrnCatId\": 12, \"Text\": \"An\" }, { \"LrnCatId\": 45, \"Text\": \"A\" } ], \"To\": 0, \"TopLrnCatId\": 12, \"Type\": 3, \"UXFrgFrom\": 0, \"UXFrgTo\": 6 } ] }";

        Gson gson = new Gson();
        TextResultResponse response = gson.fromJson(targetJson, TextResultResponse.class);
        List<String> suggestionTexts = new ArrayList<>();

        if (response.getResultItems() != null && !response.getResultItems().isEmpty()) {
            TextResultItem firstItem = response.getResultItems().get(0);
            if (firstItem.getSuggestions() != null && !firstItem.getSuggestions().isEmpty()) {
                for (Suggestion s : firstItem.getSuggestions()) {
                    if (s.getText() != null) {
                        suggestionTexts.add(s.getText());
                    }
                }
            }
        }
        System.out.println(suggestionTexts);
    }
}

方式二:无POJO原生解析(适合临时需求)

如果不想定义POJO,可以直接遍历JSON节点:

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.util.ArrayList;
import java.util.List;

public class GsonRawDemo {
    public static void main(String[] args) {
        String targetJson = "{ \"LightGingerTheTextResult\": [ { \"Confidence\": 4, \"From\": 0, \"LrnFrg\": null, \"LrnFrgOrigIndxs\": [], \"Mistakes\": [ { \"CanAddToDict\": false, \"From\": 0, \"To\": 0 } ], \"ShouldReplace\": true, \"Suggestions\": [ { \"LrnCatId\": 12, \"Text\": \"An\" }, { \"LrnCatId\": 45, \"Text\": \"A\" } ], \"To\": 0, \"TopLrnCatId\": 12, \"Type\": 3, \"UXFrgFrom\": 0, \"UXFrgTo\": 6 } ] }";

        JsonObject root = JsonParser.parseString(targetJson).getAsJsonObject();
        JsonArray resultArray = root.getAsJsonArray("LightGingerTheTextResult");
        List<String> suggestionTexts = new ArrayList<>();

        if (resultArray != null && resultArray.size() > 0) {
            JsonObject firstItem = resultArray.get(0).getAsJsonObject();
            JsonArray suggestions = firstItem.getAsJsonArray("Suggestions");
            if (suggestions != null && suggestions.size() > 0) {
                for (int i = 0; i < suggestions.size(); i++) {
                    JsonObject suggestion = suggestions.get(i).getAsJsonObject();
                    suggestionTexts.add(suggestion.get("Text").getAsString());
                }
            }
        }
        System.out.println(suggestionTexts);
    }
}

方案3:Java原生JSON API(无需第三方依赖)

如果项目不能引入外部库,可以用Java 11+自带的javax.json API(需要引入API和实现依赖)。

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;
import java.util.ArrayList;
import java.util.List;

public class NativeJsonDemo {
    public static void main(String[] args) {
        String targetJson = "{ \"LightGingerTheTextResult\": [ { \"Confidence\": 4, \"From\": 0, \"LrnFrg\": null, \"LrnFrgOrigIndxs\": [], \"Mistakes\": [ { \"CanAddToDict\": false, \"From\": 0, \"To\": 0 } ], \"ShouldReplace\": true, \"Suggestions\": [ { \"LrnCatId\": 12, \"Text\": \"An\" }, { \"LrnCatId\": 45, \"Text\": \"A\" } ], \"To\": 0, \"TopLrnCatId\": 12, \"Type\": 3, \"UXFrgFrom\": 0, \"UXFrgTo\": 6 } ] }";

        List<String> suggestionTexts = new ArrayList<>();

        try (JsonReader reader = Json.createReader(new StringReader(targetJson))) {
            JsonObject root = reader.readObject();
            JsonArray resultArray = root.getJsonArray("LightGingerTheTextResult");
            if (resultArray != null && !resultArray.isEmpty()) {
                JsonObject firstItem = resultArray.getJsonObject(0);
                JsonArray suggestions = firstItem.getJsonArray("Suggestions");
                if (suggestions != null && !suggestions.isEmpty()) {
                    for (int i = 0; i < suggestions.size(); i++) {
                        JsonObject suggestion = suggestions.getJsonObject(i);
                        suggestionTexts.add(suggestion.getString("Text"));
                    }
                }
            }
        }
        System.out.println(suggestionTexts);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:13:18