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

如何通过JsonObject的键值从Gson的JsonArray中获取目标JsonObject

如何通过JsonObject的键值从Gson的JsonArray中获取目标JsonObject

嘿,我来帮你搞定这个问题!先看看你给出的原始JSON数组:

[{key: "one", value: "beach"}, {key: "two", value:"sky"}]

你在JavaScript里用arr.filter(x=>key=='one')就能轻松筛选,换到Gson的Java环境里,咱们可以手动实现类似的逻辑——毕竟Gson的JsonArray本身没有内置的filter方法,不过写起来也很简单。

首先,你已经通过解析拿到了JsonArray:

JsonElement jsonElement = new JsonParser().parse(yourJsonString);
JsonArray jsonArray = jsonElement.getAsJsonArray();

接下来,如果你只想找到第一个匹配key值的JsonObject,可以这么写:

// 定义你要找的目标key值
String targetKey = "one";
JsonObject targetJsonObject = null;

// 遍历JsonArray里的每一个元素
for (JsonElement element : jsonArray) {
    // 先判断当前元素是不是JsonObject类型
    if (element.isJsonObject()) {
        JsonObject currentObj = element.getAsJsonObject();
        // 检查对象里有没有"key"字段,并且值和目标匹配
        if (currentObj.has("key") && currentObj.get("key").getAsString().equals(targetKey)) {
            targetJsonObject = currentObj;
            break; // 找到第一个匹配的就跳出循环,不用继续遍历了
        }
    }
}

// 拿到目标对象后就可以使用啦
if (targetJsonObject != null) {
    String targetValue = targetJsonObject.get("value").getAsString();
    System.out.println(targetValue); // 这里会输出"beach"
}

要是你需要所有匹配key值的JsonObject(比如有多个key为"one"的对象),那就用一个List来收集:

List<JsonObject> matchingObjects = new ArrayList<>();
String targetKey = "one";

for (JsonElement element : jsonArray) {
    if (element.isJsonObject()) {
        JsonObject currentObj = element.getAsJsonObject();
        if (currentObj.has("key") && currentObj.get("key").getAsString().equals(targetKey)) {
            matchingObjects.add(currentObj);
        }
    }
}

// 现在matchingObjects里就是所有符合条件的JsonObject啦

这样就实现了和JavaScript里filter类似的效果,是不是很清晰?

备注:内容来源于stack exchange,提问作者DavidDunham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:24:31