JsonNode获取json指定key对应value值

复制代码
import com.fasterxml.jackson.databind.JsonNode;
import com.gac.pbi.product.util.JacksonUtil;

import java.util.Optional;

/**
 *
 * {
 *  "clsAttrs": [
 *             {
 *        "productionCatlogLevel": {
 *           "name": "品牌名称",
 *           "brandInternationalName": "品牌别名",
 *           "states": {
 *              "code": "停用",
 *              "cnName": "停用",
 *              "enName": "disable",
 *              "alias": "Disable"
 *                }
 *            }
 *        }
 *  ]
 * }
 *  JsonNode获取json指定key对应value值
 *
 */
public class JsonNodeTest {
    public static void  main(String [] args) {
        String json = "{\"clsAttrs\":[{\"productionCatlogLevel\":{\"name\":\"品牌名称\",\"brandInternationalName\":\"品牌别名\",\"states\":{\"code\":\"停用\",\"cnName\":\"停用\",\"enName\":\"disable\",\"alias\":\"Disable\"}}}]}\n";
        // 1. 解析JSON为JsonNode,包装成Optional
        JsonNode rootNode = JacksonUtil.toJsonNode(json);
        Optional<JsonNode> rootOptional = Optional.ofNullable(rootNode);
        // 2. 链式调用获取name值,全程无空指针
        String name = rootOptional
                // 第一步:获取clsAttrs节点(空则返回空Optional)
                .map(node -> node.get("clsAttrs"))
                // 第二步:判断clsAttrs不是空数组,再取第一个元素
                .filter(clsAttrsNode -> !clsAttrsNode.isEmpty())
                .map(clsAttrsNode -> clsAttrsNode.get(0))
                // 第三步:获取productionCatlogLevel节点
                .map(itemNode -> itemNode.get("productionCatlogLevel"))
                // 第四步:获取name节点
                .map(prodNode -> prodNode.get("name"))
                // 第五步:转为字符串(空则返回默认值"")
                .map(JsonNode::asText)
                // 空值时的默认值
                .orElse("");
        System.out.println("获取到的name:" + name); // 输出:品牌名称
    }
}
相关推荐
赵庆明老师7 小时前
vben开发入门6:tsconfig.json
json·vue3·vben
jnrjian8 小时前
DR$ JSON_INDEX $DG表的处理 Json search index data guide
oracle·json
李少兄13 小时前
Fastjson2 处理 JSON 字段大小写不一致的优雅方案
java·json
ZC跨境爬虫13 小时前
3D 地球卫星轨道可视化平台开发 Day13(卫星可视化交互优化+丝滑悬停聚焦)
前端·算法·3d·json·交互
Full Stack Developme14 小时前
Hutool JSON 操作教程
windows·python·json
ZC跨境爬虫14 小时前
3D地球卫星轨道可视化平台开发 Day14(彻底移除多余阴影)
前端·javascript·3d·信息可视化·json
ZC跨境爬虫14 小时前
3D 地球卫星轨道可视化平台开发 Day12(解决初始相位拥挤问题,实现卫星均匀散开渲染)
前端·javascript·算法·3d·json
被放养的研究生15 小时前
vscode-settings.json(直接复制使用,带有注释)
ide·vscode·json
weixin_5206498715 小时前
xml json ini 文件语法
xml·java·json
ZC跨境爬虫1 天前
3D 地球卫星轨道可视化平台开发 Day7(AI异步加速+卫星系列精简+AI Agent自动评论)
前端·人工智能·3d·html·json