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); // 输出:品牌名称
    }
}
相关推荐
疯狂SQL2 天前
手写高性能在线 JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
typescript·json·next.js·web worker·前端性能优化·esbuild·源码实战
terry6007 天前
5G视频短信服务商选型全攻略:通道资源、架构能力与成本评估2026最新标准
大数据·人工智能·5g·json·asp.net·信息与通信·数据库架构
前网易架构师-高司机7 天前
带标注的辣椒病叶数据集,识别率95.9%,可识别三种病害和健康叶子,9916张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·数据集·病害·叶病·病叶·辣椒
PixelBai7 天前
JSON扁平化使用教程:从入门到精通
json
渔舟唱晚,雁阵惊寒8 天前
CSDN博客内容丢失如何恢复?
json
衣乌安、8 天前
JSON-RPC协议
网络协议·rpc·json
PixelBai8 天前
JSON过滤使用教程:从入门到精通
javascript·chrome·json
PixelBai8 天前
JSON过滤实际应用场景案例
json
一生了无挂8 天前
Java处理JSON技巧教学(从基础到高阶实战全覆盖)
java·开发语言·json