一、什么是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的四种方式相关推荐

  1. java xml 方法_Java读取xml的四种方式

    Java读取xml的四种方式 在平时工作中,难免会遇到把 XML 作为数据存储格式.面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML ...

  2. Java 并发 多线程:创建线程的四种方式

    Java 并发 多线程: 创建线程的四种方式 继承 Thread 类并重写 run 方法 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式创建 1. 通过继承 Thread ...

  3. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  4. mysql java 日期格式化_(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  5. java如何遍历树_java 遍历树的四种方式

    java 遍历树的四种方式 最近做一个玫瑰图报表,数据源为TreeJson(树状json),在网上搜集下资料,和大家分享.: 先序遍历 中序遍历 后序遍历 层次遍历 public class Tree ...

  6. java map 迭代遍历_java 遍历Map的四种方式

    java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...

  7. java实现线程的方式_java多线程实现的四种方式

    java多线程实现的四种方式1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口) 2.实现Runnable接口,重写run方法 3.实现Callable接口,重 ...

  8. java 遍历map key_java 遍历Map的四种方式

    java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...

  9. java method 创建_java中创建对象的5种方式

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法. Java中有5种创建对象的方法,下面列出例子还有他们的字节码: 使用n ...

  10. java 数组效率_java数组复制的四种方法效率对比

    有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? ...

最新文章

  1. NLP命名实体识别NER数据准备及模型训练实例
  2. CSV-03- csv 读写框架支持数组、Map、Collection 等常见集合
  3. 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动
  4. Linear regression with one variable算法实例讲解(绘制图像,cost_Function ,Gradient Desent, 拟合曲线, 轮廓图绘制)_矩阵操作...
  5. java筑基期(6)----javascript(高级(2))
  6. (转)互联网产品经理必备的工具(windows)
  7. 内存四域,变量声明和定义,寄存器,c内嵌汇编,auto,堆栈,常量,静态变量
  8. Ext 3.0 +ASP.NET2.0 可视化开发介绍
  9. Oracle数据库的备份
  10. qt自定义控件的样式
  11. Java定时任务调度工具详解之Timer篇
  12. AllenNLP之入门解读代码
  13. 狐狸找兔子问题 C语言
  14. 关于树莓派DSI屏幕触摸不准的问题
  15. 非对称加密RSA文本和Excel文件加密练习
  16. 分布式数据库CAP原理
  17. c语言编译器uwp版,Win10技巧:注册UWP版文件资源管理器
  18. OMNI.COM The Greatest program in the world
  19. 致血气方刚的产品经理:如何不被程序员嫌弃
  20. 最好用的ios数据恢复软件:PhoneRescue for Mac

热门文章

  1. SVPWM控制技术+Matlab/Simulink仿真详解
  2. javascript contains方法
  3. win2012服务器系统要求,Windows server2012公开报价多少?安装系统有什么要求?
  4. Unity3D 网页插件Embedded Browser(ZFBrowser)PC端打包文件无法加载网页解决方法
  5. 实现自动WiFi连接
  6. Cohen's kappa coefficient
  7. [Excel常用函数] countif countifs函数
  8. 公租房摇号系统功能测试用例设计
  9. 用linux模拟彩票摇号器下载,大乐透模拟摇奖器拟选号器
  10. php切图工具,ps切片工具怎么切图