写点什么

开源一夏 | 牛 plus,多层嵌套动态 JSON 该如何解析总结

作者:知识浅谈
  • 2022 年 8 月 08 日
  • 本文字数:993 字

    阅读完需:约 3 分钟

开源一夏 | 牛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 解决了。

发布于: 刚刚阅读数: 2
用户头像

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

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

评论

发布
暂无评论
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结_开源_知识浅谈_InfoQ写作社区