微信搜索关注“咖啡遇上代码”公众号,查看更多

一、什么是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;}@Overridepublic 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的速度优于其他方式

Java解析JSON的四种方式相关推荐

  1. java json 解析_Java解析JSON的四种方式

    一.什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于阅读和编写,同时也易于解析和 ...

  2. java解析xml文件四种方式介绍、性能比较和基本使用方法

    2019独角兽企业重金招聘Python工程师标准>>> 一.基本介绍: 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准. ...

  3. Java解析Xml的三种方式总结

    转自:http://blog.csdn.net/zjf280441589/article/details/50613881 XML解析技术有两种 DOM SAX DOM方式  根据XML的层级结构在内 ...

  4. 详解Java解析XML的四种方法

    http://developer.51cto.com  2009-03-31 13:12  cnlw1985  javaeye  我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...

  5. Java 实现多线程的四种方式 超详细

    Java 实现多线程的四种方式 文章目录 Java 实现多线程的四种方式 一.继承 Thread 类 二.实现 Runnable 接口 三.实现 Callable 接口 四.线程池 1,Executo ...

  6. Java中创建对象的四种方式

    为什么80%的码农都做不了架构师?>>>    Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法.    (2) 运用反射手段,调用java.l ...

  7. java解析xml的几种方式

    java解析xml的几种方式 博客分类: java基础备忘-好记性不然烂笔头 XMLJava应用服务器数据结构编程  第一种:DOM. DOM的全称是Document Object Model,也即文 ...

  8. Java 创建类的四种方式

    Java 创建类的四种方式 对于上学期已经学习过c++的同学,是不是对另一大编程语言产生了浓厚的兴趣,对于c++的面向对象编程,又和java的面向变量有何区别,下面我们从java四种创建对象来说起. ...

  9. java怎样输入五个数字打一成语,Java的线程安全四种方式五个等级[1]

    Java的线程安全四种方式五个等级[1]以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 四种方式 sychronized ...

  10. java创建多线程的四种方式

    java多线程的创建方式是面试经常会被问到的一个问题,因此在这里我对java创建多线程的四种方式做一个简单的归纳与总结,便于复习. 一.继承Thread类创建多线程 ① 创建一个继承于Thread类的 ...

最新文章

  1. 忠告初学者学习Linux系统的8点建议
  2. oracle awr 等待事件,3.db file scattered read等待事件
  3. 财经法规税收征收管理法律制度练习题二
  4. Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例
  5. 修改使用计算机的名称,Windows 10中修改计算机名称的方法,你知道几种?
  6. PS教程第十五课:图层是最基本的要求
  7. Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频
  8. centos内核引导参数
  9. php web服务器部署,php – 如何配置apache web服务器以部署laravel 5
  10. Windows网络服务---DHCP服务
  11. android与ndk交互,NDK-JNI与Java的交互 hello-world
  12. oracle12542,Oracle 11Gr1监听报错 TNS-12542 12560 00512
  13. Docker docker-compose 配置lnmp开发环境
  14. 《InfoGAN: Interpretable Representation Learning》翻译
  15. 华为g660获取解锁码
  16. cmos逻辑门传输延迟时间_半导体学习日记-CMOS器件面临的挑战
  17. ICPC 2015 北京 Today Is a Rainy Day
  18. linux最后一行awk,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  19. Java向word中插入Excel文件对象
  20. ICPR 2018|阿里巴巴读光OCR及MTWI数据集亮相引关注

热门文章

  1. c语言 学习手册,c语言学习手册
  2. WPS个人版安装VBA教程
  3. WinForm(一) WinForm入门与基本控件使用
  4. 留言板 HTML5代码
  5. Android移动开发基础案例教程 第3章 Activity
  6. iocomp iPlot使用说明6 轴属性设置
  7. JMeter压力测试步骤
  8. Mysql数据库优化方案
  9. C语言——冒泡排序法,数组
  10. C语言 数据结构 结构体 LinkList