牛 plus,多层嵌套动态 JSON 该如何解析总结

举报
知识浅谈 发表于 2022/08/08 09:38:27 2022/08/08
【摘要】 牛 plus,多层嵌套动态 JSON 该如何解析总结

在这里插入图片描述

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc

🤞牛plus,多层嵌套动态JSON该如何解析总结🤞

先介绍咱们用到的两个工具,再一起做个案例⛳⛳⛳

🎈GSON工具

Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然。它是由Google开发的一个开源库。
以下几点说明为什么应该使用这个库·标准化-Gson是一个由Google管理的标准化库。

  • 高效-这是对Java标准库的可靠,快速和高效的扩展。
  • 优化-Gson库经过高度优化。
  • 支持泛型-它为泛型提供了广泛的支持。
  • 支持复杂的内部类-它支持具有深度继承层次结构的复杂对象。

🎈OGNL表达式

温馨提醒:这个有点用,请仔细看下去
OGNL表达式是Object–Graph Navigation Language的缩写,是一种功能强大的表达式语言,通过简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转换。

🎈实战

🍮引入依赖

<dependency>
    <groupId>ognl</groupId>
    <artifactId>ognl</artifactId>
    <version>3.1.1</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.9.0</version>
</dependency>

🍮使用GSON转换为Map

//转换为map对象,这种方法处理起来比较麻烦
public Map<String,Object> tranferMap(String json) {
    Gson gson = new Gson();
    Map<String,Object> map = gson.fromJson(json, new TypeToken<Map<String,Object>>(){}.getType());
    return map;
}

📐测试代码
在这里插入图片描述

🍮使用ONGL获取指定的json中的值

只要明白三个函数的意思就理解了,第一个是传入的json字符串,第二个是传入的获取指定的json字符串中的路径对应的值,第三个是获取指定的值的返回类型,稍等举个例子就明白了。

public <T> T getvalue(String json,String path,Class<T> clazz) throws OgnlException {
    Map<String, Object> map = tranferMap(json);
    OgnlContext context = new OgnlContext();
    context.setRoot(map);

    T value = (T) Ognl.getValue(path,context,context.getRoot());
    return  value;
}

📐测试代码
在这里插入图片描述

🍚总结

使用GSON可以解析成Map对象,但是如果嵌套层数过多,就会造成获取内部某个值的时候比较麻烦,遇见这种情况就可以使用ongl解决了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。