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

如何判断JSON数组是否仅含silk/jute/cotton以控制流程执行

判断JSON数组是否仅包含指定值的条件设置

我现在有个需求:将数据存储在JSON数组中后,需要判断该数组是否仅包含silk、jute、cotton这三个值——如果是,就不执行后续操作;如果数组里有这三个之外的内容,就继续执行后续代码。想请教下应该设置什么样的判断条件?

附上我后续要执行的相关代码示例:

JSONObject itemJson = new JSONObject(); 
itemJson.put("IsCustom", false); 
itemJson.put("Quantity", item.getQuantity()); 
orderItems.put(itemJson); 

补充几个示例场景,方便理解需求:

  • 场景1:数组包含{"silk,quantity"} → 继续执行
  • 场景2:数组仅包含{"silk"} → 终止执行
  • 场景3:数组包含{"silk,false"} → 继续执行
  • 场景4:数组仅包含{"cotton"} → 终止执行

核心判断逻辑

其实核心就是检查JSON数组中的每一个元素,是否全部属于{"silk", "jute", "cotton"}这个白名单集合。只要有一个元素不在白名单里,就触发后续操作;反之则终止。

具体代码实现(Java)

假设你的JSON数组对象是JSONArray fabricArray,可以这样写完整的判断逻辑:

// 第一步:定义允许的面料值白名单,用HashSet提高查询效率
Set<String> allowedFabrics = new HashSet<>(Arrays.asList("silk", "jute", "cotton"));
boolean shouldProceed = false;

// 第二步:遍历JSON数组,检查每个元素
for (int i = 0; i < fabricArray.length(); i++) {
    String currentItem = fabricArray.getString(i);
    // 如果当前元素不在白名单里,标记需要继续执行后续代码
    if (!allowedFabrics.contains(currentItem)) {
        shouldProceed = true;
        break; // 找到一个不符合的就不用继续遍历了,节省性能
    }
}

// 第三步:根据标记决定分支
if (shouldProceed) {
    // 这里放你要继续执行的代码,也就是你提供的示例代码:
    JSONObject itemJson = new JSONObject();
    itemJson.put("IsCustom", false);
    itemJson.put("Quantity", item.getQuantity());
    orderItems.put(itemJson);
} else {
    // 数组全是允许的取值,终止后续操作
    return; // 或者根据你的业务逻辑做其他终止处理,比如跳出循环、返回结果等
}

对示例场景的适配验证

咱们对照你给的场景验证下逻辑:

  • 场景1:数组包含{"silk,quantity"} → silk,quantity不在白名单,shouldProceed为true → 继续执行 ✅
  • 场景2:数组仅包含{"silk"} → 所有元素都在白名单,shouldProceed为false → 终止执行 ✅
  • 场景3:数组包含{"silk,false"} → silk,false不在白名单,shouldProceed为true → 继续执行 ✅
  • 场景4:数组仅包含{"cotton"} → 所有元素都在白名单,shouldProceed为false → 终止执行 ✅

这样就完全符合你的需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:40