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数据的解析方式相关推荐
- C#中关于JSON数据的解析方式-JArray和JObeject:Error reading JArray from JsonReader. Current JsonReader item
一般而言,数据接口返回给我们的数据格式虽然都是json格式,但是不同的格式用的解析方式不一样,主要分为数组型和非数组型,两则格式区别如下: 数组型:(最外面有数组包裹) string jsonText ...
- c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库
CSON 基于cJSON,运行于C语言平台的json-struct模型解析工具 简介 CSON是一个简单的cJSON的二次封装,相比于使用原生cJSON一层一层解析的方式,CSON采用模型映射的方式, ...
- android json.out,Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- C#获取http请求的JSON数据并解析
文章目录 1️⃣ C#获取http请求的JSON数据并解析 1.1 获取http的JSON数据 1.2 解析JSON数据 优质资源分享 C#获取http请求的JSON数据并解析,第一步,先拿到http ...
- 利用百度APIStoreSDK获取Json数据并解析加载到ListView上
效果图(这里只是截取了List中的一项): 一.:登录百度ApiStore,获取移动sdk Android版(同时有使用文档和示例),将jar包导入到项目中 Android Studio请在放入lib ...
- swift php json解析,Swift 4.0 | JSON数据的解析和编码
文 / 菲拉兔 自己撸的图 要求: Platform: iOS8.0+ Language: Swift4.0 Editor: Xcode9 [问题补充2017-09-28] 最近我发现了一个问题:在S ...
- Android studio获取服务器端json数据并解析
最近在做Android的一个项目,涉及到Android studio与服务器端通信问题,在网上看了很多,找到了一些解决办法,这篇文章就简单介绍一下如何获取以及向服务器上传json数据. 在这个项目中, ...
- Flutter 项目编写 第三方插件库文件引入,本地图片 json数据引入解析
FlutterDemo是如何一步一步搭建起来的 最初就是直接新建flutter项目,就会自动建立一个入门项目.(开始项目前,需先学习Dart语言) flutter项目代码都在lib目录下编写: 新建包 ...
- JavaScript——JSON数据和解析
1.JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufacture ...
最新文章
- Android Studio打包生成APK
- 解决git 提交出现这个错误fatal: Unable to create ‘project_path/.git/index.lock‘: File exists.
- 启动vm虚拟机里的系统时,提示此主机支持 AMD-V,但 AMD-V 处于禁用状态。
- 最轻量级的C协程库:Protothreads
- pycharm 报黄(黄字、黄色)警告 Local variable 'xxx' might be referenced before assignment
- 酷我音乐盒里的MV怎么下载
- 文件的使用python_python-文件的使用
- php中的解析范围符,如何合理使用php7范围解析操作符
- nutch,hbase,zookeeper兼容性问题
- sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据
- 做32跟做linux哪个挣钱,想做年薪20万招聘人才,先看会不会这28个Linux运维岗经典面试题...
- 学python最好的方法_对于Python初学者,怎么学才能快速高薪?牢记四条!
- DevOps-2-从凤凰项目谈起
- python可以数独游戏吗_Python数独游戏
- [Vue warn]: Extraneous non-props attributes (style) were passed to component but could not be 警告
- For菜鸟文章:PE文件格式,qduwg翻译
- 测绘资质在线处理资质问题
- 路由器RIP动态路由配置——思科模拟器学习
- 程序猿之歌 PHP,程序猿之歌
- 2021年西交大计基题目解析(第12周)