优雅的遍历JSONArray,获取里面的数据

最近看到有个同事在遍历json数组的时候,用for循环写了一层有一层,那么是否有简便的写法呢?当然有了,下面就有用流的行驶,优雅的遍历数组,获取我们想要的数据

bash 复制代码
public static void main(String[] args) {
    String structure = "[{\"key\":\"111\",\"isRequired\":true,\"isNumber\":true,\"isFixed\":true},{\"key\":\"2\",\"isFixed\":true},{\"key\":\"3\",\"isNumber\":true},{\"key\":\"4\",\"isRequired\":true}]";
    JSONArray jsonArray;

    try {
        jsonArray = JSON.parseArray(structure);
    } catch (JSONException e) {
        System.err.println("Invalid JSON format: " + e.getMessage());
        return;
    }

    List<String> unitList = Optional.ofNullable(jsonArray)
            .orElse(new JSONArray())
            .stream()
            .filter(item -> item instanceof JSONObject)
            .map(item -> {
                JSONObject jsonObject = (JSONObject) item;
                String key = jsonObject.getString("key");
                return key;
            })
            .collect(Collectors.toList());

    System.out.println(unitList);
}
相关推荐
xiaoye37084 小时前
Java 自动装箱 / 拆箱 原理详解
java·开发语言
YDS8295 小时前
黑马点评 —— 分布式锁详解加源码剖析
java·spring boot·redis·分布式
迷藏4946 小时前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
升鲜宝供应链及收银系统源代码服务6 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
daidaidaiyu6 小时前
Nacos实例一则及其源码环境搭建
java·spring
小江的记录本6 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存
摇滚侠7 小时前
Java 项目《谷粒商城-1》架构师级Java 项目实战,对标阿里 P6-P7,全网最强,实操版本
java·开发语言
zihao_tom7 小时前
Spring Boot(快速上手)
java·spring boot·后端
hua872228 小时前
SpringSecurity之跨域
java
小王不爱笑1328 小时前
G1 GC 的核心基础:Region 模型的补充细节
java·jvm·算法