Java秘技之Json数据解析与转换 -- Java使用示例
概要
json是前后台交互常用的数据格式,在java后台中经常需要实现java bean、list和json字符串的相互转化,故简单介绍不同框架的使用,提供简单工具类。
在Java中,常见的json框架有:Jackson(springboot默认)、fastjson(阿里开源)、Gson(谷歌开源)。网络有它们的性能对比研究,此处不做讨论,根据自己习惯来选择即可。
json的数据结构包括:{}、[],等同于java的对象、数组。两者相互组合,就能够表达很复杂的数据结构了。
使用
Fastjon
- 添加Maven依赖,可从https://github.com/alibaba/fastjson获取。
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.61</version></dependency>
- 使用示例,主要对象是 JSON、JSONArray、JSONObject
public void fastJsonTest() {//数据示例List list = Arrays.asList("Banana","apple","Orange");String obj = "{\"id\":1001,\"age\":12}";Person p = new Person(1001,12,"David");//java对象 ==> json字符串,json对象String str = JSON.toJSONString(p);JSONObject jsonObj1 = (JSONObject) JSON.toJSON(p);//json字符串 ==> json对象、Java对象Person p1 = JSON.parseObject(obj, Person.class);JSONObject jsonObj2 = JSON.parseObject(obj);//json对象 ==> java对象Person p2 = JSON.toJavaObject(jsonObj2, Person.class);//数组处理JSONArray json = (JSONArray)JSON.toJSON(list);String jsonStr = String.valueOf(JSON.toJSON(json));}
- 官方教程 https://github.com/alibaba/fastjson/wiki/Quick-Start-CN
Jackson
- 添加Maven依赖,SpringBoot中默认引入,无需额外操作。包括三个jar包:jackson-databind、jackson-core、jackson-annotations
- 使用示例,注意异常处理
public void jacksonDemo() throws IOException {//数据示例User user = new User("001","David","xxx",12);Map<String,Object> map = new HashMap<String,Object>();map.put("A1", user);map.put("A2", new ArrayList<String>());//创建ObjectMapper对象ObjectMapper mapper = new ObjectMapper();//Java对象 ==> json字符串String jsonStr1 = mapper.writeValueAsString(user);String jsonStr2 = mapper.writeValueAsString(map);//json字符串 ==> Java对象User u = mapper.readValue(jsonStr1, User.class);Map m = mapper.readValue(jsonStr2, Map.class);}
Gson
添加Maven依赖,可从 https://github.com/google/gson获取
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.7</version> </dependency>
使用示例
public void gsonDemo() {//示例数据User user = new User("kevin",22,new Date(),Arrays.asList("aa","bb","cc"));List list = Arrays.asList("Banana","apple","Orange");//创建gson对象Gson gson = new Gson();//Java对象 ==> json字符串String s1 = gson.toJson(list);String s2 = gson.toJson(user);//json字符串 ==> Java对象gson.fromJson(s1, List.class);gson.fromJson(s2, User.class);}
结语
感谢您的观看,如有不足之处,欢迎批评指正。
Java秘技之Json数据解析与转换 -- Java使用示例相关推荐
- json数据解析与JAVA对象转换以及在JQUERY中的使用
JSON基础了解 JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小 ...
- dio java,Flutter基础(十一)网络请求(Dio)与JSON数据解析
本文首发于微信公众号「后厂技术官」 前言 在Android开发中如果我们想要请求网络,可以使用HttpClent.HttpURLConnection,但在项目中一般都会使用OkHttp和Retrofi ...
- java数组里套数组_用JAVA进行Json数据解析(对象数组的相互嵌套)
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...
- Java对【JSON数据的解析】--官方解析法
要求:解析下面5个JSON数据 1.String string ="{name:'zhangsan',age:18}"; 2.String string2 = "{per ...
- Android JSON数据解析(GSON方式)
要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...
- Android json数据解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- JSON 数据解析的方法
JSON 数据解析 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使 ...
- 手动JSON数据解析
1.将json格式的字符串{}转化为JAVA对象 //第一步:获取或创建Json数据String json = "{\n" +" \"id\":2,\ ...
- JSON数据解析及gson.jar包
从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送. 服务器端的编程语言只能以如下 3 种格式返回数据: HTML XML JSON JSON一种简单的数据格式,比xml更轻巧. JS ...
最新文章
- Hadoop学习之第七章节:Hive安装配置
- python os.path模块学习(转)
- 快速排序算法的实现 随机生成区间里的数 O(n)找第k小 O(nlogk)找前k大...
- Java BigDecimal类的使用入门示例
- C++实现AOE网中的关键路径算法及机动时间计算算法(邻接表存储)
- 关于Spring batch的学习之CSV2DB
- HDFS剩余空间大小的Java接口,java api获取hdfs索引大小
- php ado 建立注册,如何注册ADO与DAO [Access软件网]
- Numpy的21个常用知识点
- JUC并发包基于AQS实现的线程同步器的案例分析
- Gary Marcus再发万字长文,列14个QA回应机器学习批判言论
- An error has occured.See the log file
- IE6 Peekaboo(躲躲猫) Bug
- 【转】图解领带的打法10种
- 微信支付的服务器配置url超时,微信H5支付商家存在未配置的参数,请联系商家解决的...
- Docker 修改容器端口
- mysqlbinlog恢复mysql表数据
- STM32F10x系列GPIO寄存器BRR、BSRR、ODR、IDR的使用理解
- MFC连接sqlite3数据库
- ubuntu11.10 华为无线上网卡e303s
热门文章
- Blazor——Asp.net core的新前端框架
- 福州首届.NET开源社区技术交流会圆满成功
- github开源项目免费使用Azure PipeLine
- .NET下使用socket.io随笔记录
- C#在Linux+Mono环境中使用微信支付证书
- 使用 Autofac 进行依赖注入
- 调试 不弹出 小米_时隔六年,小米NFC碰碰贴复活,碰一下自动亮灯、联网、投屏...
- word如何设置上标形式_如何在word中设置特殊页码
- memcache在项目中的应用
- mysql一张表最多多少索引_MySQL一个索引最多有多少个列?真实的测试例子