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); // 输出:品牌名称
    }
}
相关推荐
猿长大人16 小时前
C# | JSON 序列化中的多态接口处理:基于 Attribute 实现精准 $type 控制
c#·json
消失的旧时光-194319 小时前
第六篇:Redis Hash——一个用户对象应该保存成 JSON,还是保存成 Hash?
redis·json·哈希算法
SEO_juper21 小时前
2026年Schema自动注入实战:用Python批量给1000个页面加上JSON-LD,AI引用率实测提升38%
人工智能·python·json·seo·独立站
Wang's Blog1 天前
AI Agent白手起家37: LangChain 输出解析器实战:文本、JSON、XML 与 Pydantic
xml·langchain·json
灵析表格1 天前
json_ObjectToKV 函数深度研究报告
json·excel·wps·灵析表格·excel公式盒子
wtsolutions1 天前
JSON 怎么导入 WPS?怎么转换成 WPS 表格?WPS 怎么打开 JSON?完整教程
json·wps
IDIOT___IDIOT2 天前
JSON-RPC 2.0 与 MCP 协议:从消息格式到进程通信 大模型MCP
rpc·大模型·json·agent·mcp
憧憬成为原神糕手2 天前
Playwright、Selenium、DrissionPage 与 JSON 接口怎么选?
数据库·selenium·json
SelectDB技术团队2 天前
Apache Doris 4.1:面向 AI & Search 的统一数据底座怎么选?向量检索 + 全文搜索 + 100MB JSON 完整能力拆解
人工智能·json·apache doris
进击切图仔2 天前
VS Code 调试 launch.json 解析
json