java json 解析_Java解析JSON的四种方式
一、什么是JSON
JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于阅读和编写,同时也易于解析和生成,并有效地提升网络传输效率。
二、JSON 语法
(1)数据在名称/值对中
(2)数据由逗号分隔
(3)大括号保存对象
(4)中括号保存数组
三、Java中JSON的生成与解析的四种方式(简单的Demo):
一个实体类:用于与JSON数据进行相互转换
public class Person {
private String name;
private String sex;
private int age;
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}';
}
}
(1)利用传统方式:
由实体类生成Json字符串:
public Person getPerson(){
return new Person("张三", "男", 25);
}
@Test
public void EntityToJson(){
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", getPerson().getName());
jsonObject.put("sex", getPerson().getSex());
jsonObject.put("age", getPerson().getAge());
System.out.println(jsonObject.toString());
}
由Json字符串生成实体类:
@Test
public void JsonToEntity(){
String jsonString = "{\"sex\":\"男\",\"name\":\"张三\",\"age\":25}";
JSONObject jsonObject = new JSONObject(jsonString);
Person person = new Person(jsonObject.get("name").toString(), jsonObject.get("sex").toString(), Integer.valueOf(jsonObject.get("age").toString()));
System.out.println(person.toString());
}
(2)利用Jackson方式:
由实体类生成Json字符串:
@Test
public void EntityToJson() throws IOException {
Person person = new Person("张三", "男", 25);
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString);
}
由Json字符串生成实体类:
@Test
public void JsonToEntity() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";
Person person = objectMapper.readValue(jsonString, Person.class);
System.out.println(person);
}
(3)利用GSON方式:
由实体类生成Json字符串:
@Test
public void EntityToJson(){
Person person = new Person("张三", "男", 25);
Gson gson = new Gson();
String jsonString = gson.toJson(person);
System.out.println(jsonString);
}
由Json字符串生成实体类:
@Test
public void JsonToEntity(){
String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";
Gson gson = new Gson();
Person person = gson.fromJson(jsonString, Person.class);
System.out.println(person.toString());
}
(4)利用FastJSON方式
由实体类生成Json字符串:
@Test
public void EntityToJson(){
Person person = new Person("张三", "男", 25);
Object jsonString = JSON.toJSON(person);
System.out.println(jsonString.toString());
}
由Json字符串生成实体类:
@Test
public void JsonToEntity(){
String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";
Person person = JSON.parseObject(jsonString, Person.class);
System.out.println(person.toString());
}
四、几种方式的比较
类型
简介
传统Json方式:
复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善
Jackson方式:
复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式
Gson方式:
功能方面在几种方式中最优,性能方面不如Jackson方式
FastJson方式:
复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式
转载原文链接:https://blog.csdn.net/leosblog/article/details/80842640
java json 解析_Java解析JSON的四种方式相关推荐
- java xml 方法_Java读取xml的四种方式
Java读取xml的四种方式 在平时工作中,难免会遇到把 XML 作为数据存储格式.面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML ...
- Java 并发 多线程:创建线程的四种方式
Java 并发 多线程: 创建线程的四种方式 继承 Thread 类并重写 run 方法 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式创建 1. 通过继承 Thread ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- mysql java 日期格式化_(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...
- java如何遍历树_java 遍历树的四种方式
java 遍历树的四种方式 最近做一个玫瑰图报表,数据源为TreeJson(树状json),在网上搜集下资料,和大家分享.: 先序遍历 中序遍历 后序遍历 层次遍历 public class Tree ...
- java map 迭代遍历_java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...
- java实现线程的方式_java多线程实现的四种方式
java多线程实现的四种方式1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口) 2.实现Runnable接口,重写run方法 3.实现Callable接口,重 ...
- java 遍历map key_java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...
- java method 创建_java中创建对象的5种方式
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法. Java中有5种创建对象的方法,下面列出例子还有他们的字节码: 使用n ...
- java 数组效率_java数组复制的四种方法效率对比
有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? ...
最新文章
- NLP命名实体识别NER数据准备及模型训练实例
- CSV-03- csv 读写框架支持数组、Map、Collection 等常见集合
- 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动
- Linear regression with one variable算法实例讲解(绘制图像,cost_Function ,Gradient Desent, 拟合曲线, 轮廓图绘制)_矩阵操作...
- java筑基期(6)----javascript(高级(2))
- (转)互联网产品经理必备的工具(windows)
- 内存四域,变量声明和定义,寄存器,c内嵌汇编,auto,堆栈,常量,静态变量
- Ext 3.0 +ASP.NET2.0 可视化开发介绍
- Oracle数据库的备份
- qt自定义控件的样式
- Java定时任务调度工具详解之Timer篇
- AllenNLP之入门解读代码
- 狐狸找兔子问题 C语言
- 关于树莓派DSI屏幕触摸不准的问题
- 非对称加密RSA文本和Excel文件加密练习
- 分布式数据库CAP原理
- c语言编译器uwp版,Win10技巧:注册UWP版文件资源管理器
- OMNI.COM The Greatest program in the world
- 致血气方刚的产品经理:如何不被程序员嫌弃
- 最好用的ios数据恢复软件:PhoneRescue for Mac
热门文章
- SVPWM控制技术+Matlab/Simulink仿真详解
- javascript contains方法
- win2012服务器系统要求,Windows server2012公开报价多少?安装系统有什么要求?
- Unity3D 网页插件Embedded Browser(ZFBrowser)PC端打包文件无法加载网页解决方法
- 实现自动WiFi连接
- Cohen's kappa coefficient
- [Excel常用函数] countif countifs函数
- 公租房摇号系统功能测试用例设计
- 用linux模拟彩票摇号器下载,大乐透模拟摇奖器拟选号器
- php切图工具,ps切片工具怎么切图