首页 > 解决方案 > 如何使用流而不是循环来迭代 jsonarray?

问题描述

我已经完成了for 循环,但我想在流和过滤器的帮助下循环Streams.stream(jsonArray).filter(....)

下面是我的代码:

JSONArray jsonArray = jsonObject.getJSONArray("Values");
for (int i = 0; i < jsonArray.length(); i++) {
  JSONObject jsonObj = jsonArray.getJSONObject(i);
  if (jsonObj.getString("code").equalsIgnoreCase("sale")) {
    if ("1".equals(jsonObj.getString("value"))) {
      logger.info("Found");
    } else {
      logger.info("Not Found!");
    }
  }
}

标签: javajava-8java-stream

解决方案


由于org.json.JSONArrayimplements Iterable<Object>,您可以使用

Stream<Object> stream = StreamStreamSupport.stream(a.spliterator(), false);

从中获取流。然后,您可以对此使用通常的流操作。


推荐阅读