问题:JSON数据如何进行解析呢,方式有哪些?

这个问题是我们作为程序员几乎每天都要进行的操作,那它有多少种方式呢,我们这里就这点来说一说。

解析的四种方式

  • 官方解析
  • 谷歌 Gson 解析
  • 阿里巴巴 FastJson 解析
  • Jackson 解析

案例实操

这里我们就只讨论对象与 json 如何互相转换。

这里我们先创建好 Maven 项目,方便引入依赖,通过单元测试来实际检验我们不同的解析方式。

下面我们都使用 User 对象,先创建好我们需要的类。

User.java

package org.example;public class User {private String name;private String sex;private Integer age;public User() {}public User(String name, String sex, Integer age) {this.name = name;this.sex = sex;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + ''' +", sex='" + sex + ''' +", age=" + age +'}';}}

官方解析

官方提供的 json 解析方式,比较繁琐,所以用的人比较少。

第一步,引入依赖:

<!--json官方-->
<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20160810</version>
</dependency>

第二步,编写测试代码:

package org.example;import org.json.JSONObject;
import org.springframework.stereotype.Component;/*** 官方解析*/
@Component
public class JsonTest1 {/*** 对象转json* @param user* @return*/public String userToJson(User user){JSONObject jsonObject = new JSONObject(user);String jsonStr = jsonObject.toString();return jsonStr;}/*** json转对象* @param json* @return*/public User userFromJson(String json){JSONObject jsonObject = new JSONObject(json);String name = jsonObject.getString("name");String sex = jsonObject.getString("sex");int age = jsonObject.getInt("age");User user = new User(name,sex,age);return user;}}

第三步,单元测试:

package org.example;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring.xml")
public class JsonTest1Test {@Autowiredprivate JsonTest1 jsonTest1;@Testpublic void userToJson() {User user = new User("秦明", "man", 18);String json = jsonTest1.userToJson(user);System.out.println(json);}@Testpublic void userFromJson() {String json = "{"sex":"man","name":"秦明","age":18}";User user = jsonTest1.userFromJson(json);System.out.println(user);}
}

谷歌 Gson 解析

第一步,引入依赖:

<!--gson-->
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version>
</dependency>

第二步,编写测试代码:

package org.example;import com.google.gson.Gson;
import org.springframework.stereotype.Component;/*** gson解析*/
@Component
public class JsonTest2 {/*** 对象转json* @param user* @return*/public String userToJson(User user){Gson gson = new Gson();String json = gson.toJson(user);return json;}/*** json转对象* @param json* @return*/public User userFromJson(String json){Gson gson = new Gson();User user = gson.fromJson(json, User.class);return user;}}

第三步,单元测试:同上(下面第三步和第四步和上面都一样,所以下面省略)

第四步,查看结果:同上

阿里巴巴 FastJson 解析

这个解析方式是由阿里巴巴开发出来的,效率最高,深受大家喜爱,功能强大,想要更深入学习的可以查看 FastJson 官网API。

第一步,引入依赖:

<!--fastjson-->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version>
</dependency>

第二步,编写测试代码:

package org.example;import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;/*** fastjson解析*/
@Component
public class JsonTest3 {/*** 对象转json* @param user* @return*/public String userToJson(User user){String json = JSONObject.toJSONString(user);return json;}/*** json转对象* @param json* @return*/public User userFromJson(String json){User user = JSONObject.parseObject(json,User.class);return user;}}

Jackson 解析

这个解析方式是在目前我们使用最流行的一些框架比如 SSM、SpringBoot,其内部的 json 解析使用的就是 Jackson,但往往我们会另外引入 FastJson 来使用,因为速度更快。

第一步,引入依赖:

<!--jackson-->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.8</version>
</dependency>

第二步,编写测试代码:

package org.example;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Component;import java.io.IOException;/*** jackson解析*/
@Component
public class JsonTest4 {/*** 对象转json* @param user* @return*/public String userToJson(User user) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();String json = objectMapper.writeValueAsString(user);return json;}/*** json转对象* @param json* @return*/public User userFromJson(String json) throws IOException {ObjectMapper objectMapper = new ObjectMapper();User user = objectMapper.readValue(json, User.class);return user;}}

扩展~JSON的诞生

JSON 的诞生是因为 XML 整合到 HTML 中各个浏览器实现的细节不尽相同,所以道格拉斯·克罗克福特(Douglas Crockford)和 奇普·莫宁斯达(Chip Morningstar)一起从 JS 的数据类型中提取了一个子集,作为新的数据交换格式,因为主流的浏览器使用了通用的 JavaScript 引擎组件,所以在解析这种新数据格式时就不存在兼容性问题,于是他们将这种数据格式命名为 “JavaScript Object Notation”,缩写为 JSON,由此 JSON 便诞生了!

fastjson解析多层数据_JSON数据如何进行解析呢,方式有哪些?相关推荐

  1. java解析多层json,手把手教你怎么解析多层嵌套的JSON数据(使用JSONModel)

    2018.11.14日更新 前言 没想到这篇简单介绍JSONModel的文章竟然已经破了两千阅读量,一跃成为我阅读量最高的文章,作为iOS小白的我感到万分惶恐 在这一个月的项目中,总是用到JSONMo ...

  2. go 怎么遍历json数据_json数据怎么处理 好难 啊!

    之前爬了一些XX高考网站的一些高考数据,最近在处理数据的时候有一些小困惑,如图一这是我用爬虫爬下来的数据 重点是:我使用的是scrapy的 JsonLinesItemExporter 爬取的 就送一行 ...

  3. java解析多层嵌套json字符串

    java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...

  4. fastjson解析多层数据_fastJson解析多层Json数据案例

    这里咱们来实现一个获取接口数据存入数据库的案例html 例如数据:java {   "code":200,   "msg":"ok",   ...

  5. gson解析mysql城市json数据_Gson解析复杂的json数据

    首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些: 1 public classJsonBean {2 publicString a;3 public Listb;4 ...

  6. 解析全国省市区Json数据

    最近在使用项目中的区域表时,发现了有区域缺失的情况,于是找了个较新的省市区数据来解析更新到区域表中. 数据来源:https://blog.csdn.net/supergao222/article/de ...

  7. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  8. 十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据

    GitHub代码地址:点击这里 1. H.264的CAVLC解析宏块残差数据的流程 在H.264的解码器在解析宏块的残差数据时,其流程类似于上文提到的CAVLC编码的逆过程.在解析一个宏块残差的时候, ...

  9. Android中解析JSON形式的数据

    转自:http://shazhuzhu1.iteye.com/blog/974758 1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的 ...

最新文章

  1. 使用Python和OpenCV构建图像金字塔
  2. 编程中new[]和delete[]应该如何使用?
  3. 从一次故障聊聊前端 UI 自动化测试
  4. 使用vlc播放m3u8网络视频教程
  5. mysql多列索引不全用,MySQL多列索引的生效规则
  6. python小程序-10个Python练手小程序,学习python的很好的资料
  7. 【控制】《鲁棒控制》-周克敏老师
  8. 理解Python的迭代器
  9. Ubuntu识别USB设备
  10. 蓝桥杯第八届省赛JAVA真题----油漆面积
  11. 面向数据科学的概率论 一、基础
  12. 使expect脚本传回返回值
  13. A Bit of Fun
  14. Android星座查询实验报告,数字基带传输实验实验报告
  15. 使用文件流的方式将 DataTable 导入到 Excel 中
  16. 很不错的在线Office控件:IWebOffice与SOAOffice
  17. java 四级联动_使用js实现四级联动
  18. Windows下搭建wnmp
  19. Python中可迭代对象是什么?
  20. Qlik之创建任务调度(五)

热门文章

  1. Kaggle Titanic补充篇
  2. MyBatis源码分析-IDEA新建MyBatis源码工程
  3. #define const typedef
  4. 贤惠限量,请妥善使用
  5. DataGrid多行数据的展示和编辑(6)
  6. c# 中Stopwatch 类的运用
  7. spring @Value注解#和$区别
  8. 嵌入式C语言之位运算 ..|.~.
  9. Jenkins+Maven+SVN快速搭建持续集成环境(转)
  10. 数据库访问 mysql连接库--查询