解析的四种方式

  • 官方解析
  • 谷歌 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数据的解析方式相关推荐

  1. C#中关于JSON数据的解析方式-JArray和JObeject:Error reading JArray from JsonReader. Current JsonReader item

    一般而言,数据接口返回给我们的数据格式虽然都是json格式,但是不同的格式用的解析方式不一样,主要分为数组型和非数组型,两则格式区别如下: 数组型:(最外面有数组包裹) string jsonText ...

  2. c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库

    CSON 基于cJSON,运行于C语言平台的json-struct模型解析工具 简介 CSON是一个简单的cJSON的二次封装,相比于使用原生cJSON一层一层解析的方式,CSON采用模型映射的方式, ...

  3. android json.out,Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  4. C#获取http请求的JSON数据并解析

    文章目录 1️⃣ C#获取http请求的JSON数据并解析 1.1 获取http的JSON数据 1.2 解析JSON数据 优质资源分享 C#获取http请求的JSON数据并解析,第一步,先拿到http ...

  5. 利用百度APIStoreSDK获取Json数据并解析加载到ListView上

    效果图(这里只是截取了List中的一项): 一.:登录百度ApiStore,获取移动sdk Android版(同时有使用文档和示例),将jar包导入到项目中 Android Studio请在放入lib ...

  6. swift php json解析,Swift 4.0 | JSON数据的解析和编码

    文 / 菲拉兔 自己撸的图 要求: Platform: iOS8.0+ Language: Swift4.0 Editor: Xcode9 [问题补充2017-09-28] 最近我发现了一个问题:在S ...

  7. Android studio获取服务器端json数据并解析

    最近在做Android的一个项目,涉及到Android studio与服务器端通信问题,在网上看了很多,找到了一些解决办法,这篇文章就简单介绍一下如何获取以及向服务器上传json数据. 在这个项目中, ...

  8. Flutter 项目编写 第三方插件库文件引入,本地图片 json数据引入解析

    FlutterDemo是如何一步一步搭建起来的 最初就是直接新建flutter项目,就会自动建立一个入门项目.(开始项目前,需先学习Dart语言) flutter项目代码都在lib目录下编写: 新建包 ...

  9. JavaScript——JSON数据和解析

    1.JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufacture ...

最新文章

  1. Android Studio打包生成APK
  2. 解决git 提交出现这个错误fatal: Unable to create ‘project_path/.git/index.lock‘: File exists.
  3. 启动vm虚拟机里的系统时,提示此主机支持 AMD-V,但 AMD-V 处于禁用状态。
  4. 最轻量级的C协程库:Protothreads
  5. pycharm 报黄(黄字、黄色)警告 Local variable 'xxx' might be referenced before assignment
  6. 酷我音乐盒里的MV怎么下载
  7. 文件的使用python_python-文件的使用
  8. php中的解析范围符,如何合理使用php7范围解析操作符
  9. nutch,hbase,zookeeper兼容性问题
  10. sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据
  11. 做32跟做linux哪个挣钱,想做年薪20万招聘人才,先看会不会这28个Linux运维岗经典面试题...
  12. 学python最好的方法_对于Python初学者,怎么学才能快速高薪?牢记四条!
  13. DevOps-2-从凤凰项目谈起
  14. python可以数独游戏吗_Python数独游戏
  15. [Vue warn]: Extraneous non-props attributes (style) were passed to component but could not be 警告
  16. For菜鸟文章:PE文件格式,qduwg翻译
  17. 测绘资质在线处理资质问题
  18. 路由器RIP动态路由配置——思科模拟器学习
  19. 程序猿之歌 PHP,程序猿之歌
  20. 2021年西交大计基题目解析(第12周)

热门文章

  1. Redmi K30 Pro屏幕参数公布:没有90Hz刷新率又如何?
  2. 10多家在线旅游企业呼吁海外商家向中国游客提供优惠退改措施
  3. 天猫双11倒计时:80000瓶1499元53度飞天茅台将开放限量抢购
  4. 小米电视双十一大降价:55寸仅1399元
  5. 微信发布新版本SDK 开发者需尽快升级
  6. 6折入股蚂蚁金服?巨人网络如此回应
  7. 麒麟980+巴龙5000!华为Mate 20 X 5G版通过3C认证:支持40W快充
  8. 官司缠身!马斯克和特斯拉目前面临数十起诉讼和调查
  9. 拳王公社:网赚高手的零成本引流秘籍,这4个才是核心思维!
  10. Makefile初步理解