如何判断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
相关产品推荐
相关产品推荐

