当前位置:网站首页>开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
2022-08-08 09:42:00 【InfoQ】
作者:知识浅谈,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解决了。
边栏推荐
猜你喜欢
随机推荐
Is it safe to buy stocks with a straight flush?Will the funds be transferred?
【office】word
Use of .json()
Kotlin协程:生命周期原理
开源一夏|Flutter实现搜索的三种方式
STL underlying implementation principle
LabVIEW前面板和程序框图的最大尺寸
推荐下载软件
PHP 手机号脱敏,正则表达式/简易版
Offensive and defensive world - web2
播放器的一些改进
英文token预处理,用于将英文句子处理成单词
Elasticseach实践1
Debug 调式程序
Web optimization experience (6) - optimization closed-loop practice
面试突击72:输入URL之后会执行什么流程?
AI引领一场新的科学革命
MySQL中的锁机制详解
关于#sql#的问题:kingwow数据库
小白求助,关于Go编译的顺序