⼀⽂搞懂JSON及JSON数据解析
⽂章⽬录
前⾔
在前端和后端程序之间,通过⼀种交换的格式和接⼝进⾏拆分,⽽这种数据交换的格式⼤多都是使⽤JSON格式。因此,JSON数据解析是程序开发中⼀个重要的知识点。下⾯,我们⼀起来从XML开始来学习JSON及数据解析吧!
⼀、XML
1、简介政府个人简历模板免费下载
XML的全称为可扩展标记语⾔(eXtensible Markup Language)。它可以⽤来进⾏数据传输、数据存储,也可⽤来编写配置⽂件,如数据库连接的配置⽂件经常使⽤.XML⽂件格式。
XML也是⼀种数据交换格式,不过由于JSON更加简洁,⽬前已经基本被JSON所替代。
2、XML解析⽅式
XML解析⽅式主要分为两类,具体可分为四种,分别为SAX解析、DOM解析、JDOM解析和DOM4J解析。其中最后两种都是基于DOM解析的。以下分别介绍这四种解析⽅式,并说明它们的优缺点,这也是⾯试中的⼀个考点。
2.1、SAX解析⽅式
逐⾏读取XML⽂件解析,当解析到⼀个标签的开始、结束、内容、属性时,触发事件。可以编写程序在事件发⽣时,进⾏响应的处理。
优点
逐⾏加载,节省内存,有利于解析⼤于系统内存的⽂档
能⽴即开始,不⽤等待所有数据被处理
可以在某个条件得到满⾜时停⽌解析
缺点
单向解析,⽆法定位⽂档层次,⽆法同时访问同⼀⽂档的不同部分数据
⽆法得知事件发⽣时元素的层次,只能维护节点的⽗/⼦关系
只读解析⽅式,⽆法修改XML⽂件的内容
2.2、DOM解析⽅式
需要加载整个⽂档和在内存中建⽴⽂档树模型,程序员可以通过操作⽂档树来完成数据的获取、修改、删除等
优点:
⽂档在内存加兹安,允许操作数据和结构
访问是双向的,可以在任何时候在树中双向解析数据
缺点:
⽂档全部加载到内存中,资源消耗⼤
2.3、JDOM解析⽅式
简化与XML的交互并且⽐使⽤DOM实现更快。第⼀个Java特定模型
优点:
使⽤具体类⽽不是接⼝,简化了DOM的API
⼤量使⽤了Java集合类,⽅便开发⼈员
缺点
灵活性不够好
性能不够优异
2.4、DOM4J解析⽅式
JDOM的⼀种智能分⽀,合并了许多超出基本xml⽂档表⽰的功能,如继承的XPath⽀持、XML Schema⽀持以及⽤于⼤⽂档或流⽂档 的基于事件 的处理。
性能优异、功能强⼤、易于使⽤
开源项⽬中被⼴发使⽤
⼆、JSON
1. 简介及其语法格式
JSON的全称为JavaScript Object Notation ,可翻译为JS对象简谱 , 是⼀种轻量级的数据交换格式。
⼀个对象, 由⼀个⼤括号表⽰。括号中描述对象的属性 ,类似于Python中的字典。以下为JSON数据和XML数据的格式对⽐。
通过键值对来描述对象的属性 (可以理解为, ⼤括号中, 包含的是⼀个个的键值对.)
格式:
键与值之间使⽤冒号连接, 多个键值对之间使⽤逗号分隔.
键值对的键 应使⽤引号引住 (通常Java解析时, 键不使⽤引号会报错. ⽽JS能正确解 析.)
键值对的值, 可以是JS中的任意类型的数据
2. 解析⽅式
⽬前⼤多使⽤第三⽅类库或组件来进⾏JSON解析,这样可以简化解析流程。下⾯分别介绍Google的GSON类库和阿⾥的fastjson组件。
2.1 GSON解析
GSON是Google推出的⽤来解析json数据以及将对象转换成json数据的框架。
jar下载链接:
2.1.1 对象转换为JSON字符串
echarts实际代码
将对象转换为JSON字符串的主要步骤如下:
1.引⼊JAR包
2.在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的Java对象);
代码⽰例:
⾸先,导⼊JAR包,写⼀个JavaBean:
package com.li.java.核⼼类库.XML与JSON;
import java.util.Objects;
/**
* @author :lxc
* @date :Created in 2021/6/1  18:28
* @description:解析的数据类
*/
public class Book {
private String id;
private String name;
private String info;
public Book(){
}
public Book(String id, String name, String info){
this.id = id;
this.name = name;
this.info = info;
}
public String getId(){
return id;
}
public void setId(String id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getInfo(){
return info;
}
public void setInfo(String info){
this.info = info;
}
@Override
public boolean equals(Object o){
if(this == o)return true;
if(o == null ||getClass()!= o.getClass())return false;
Book book =(Book) o;
return Objects.equals(id, book.id)&& Objects.equals(name, book.name)&& Objects.equals(info, book.info); }
@Override
public int hashCode(){
return Objects.hash(id, name, info);
}
@Override
public String toString(){
return"Book{"+
"id='"+ id +'\''+
可配置的规则引擎", name='"+ name +'\''+
", info='"+ info +'\''+
", info='"+ info +'\''+
'}';
}
}
然后,在实现类中进⾏GSON解析:
package com.li.java.核⼼类库.XML与JSON;
le.gson.Gson;
/**
* @author :lxc
* @date :Created in 2021/6/1 18:26
* @description:使⽤⾕歌的Gson解析json数据
*/
public class GsonParse {
public static void main(String[] args){
/
/1 创建Gson对象
Gson gson = new Gson();
//2 创建数据对象并进⾏解析
Book book = new Book("1001","平凡的世界","孙少安的成长史");
String s = Json(book);
System.out.println(s);
}
}
运⾏结果:
{"id":"1001","name":"平凡的世界","info":"孙少安的成长史"}
2.1.2 JSON字符串转换为对象
将JSON字符串转换为对象的主要步骤如下:
1.引⼊JAR包
2.在需要转换Java对象的位置,编写如下代码:
对象= new Gson().fromJson(JSON字符串,对象类型.class);
代码⽰例:
package com.li.java.核⼼类库.XML与JSON;
le.gson.Gson;
/**
* @author :lxc
* @date :Created in 2021/6/1 18:26
* @description:使⽤⾕歌的Gson解析json数据
*/
public class GsonParse {
public static void main(String[] args){
//将json转换为对象
//{"id"="1001","name"="平凡的世界","info"="孙少安的成长史"}
Book book = new Gson().fromJson("{\"id\"=\"1001\",\"name\"=\"平凡的世界\",\"info\"=\"孙少安的成长史\"}", Book.class);        System.out.String());
}
}
运⾏结果
Book{id='1001', name='平凡的世界', info='孙少安的成长史'}
2.2 fastjson
阿⾥官⽅给的定义是, fastjson 是阿⾥巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,⽀持将 Java Bean 序列化为JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
jar下载链接:
优点:
速度快。fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
使⽤⼴泛。fastjson在阿⾥巴巴⼤规模使⽤,在数万台服务器上部署,fastjson在业界被⼴泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之⼀。
使⽤简单。fastjson的 API ⼗分简洁。
功能完备。⽀持泛型,⽀持流处理超⼤⽂本,⽀持枚举,⽀持序列化和反序列化扩展。
缺点:
虽然有⾮常多的testcase,不过bug也多,因此建议使⽤最新版。
select下拉框onchange事件2.2.1 对象转换为JSON字符串
使⽤步骤:
1.引⼊JAR包
2.在需要转换JSON字符串的位置编写如下代码即可:
String JSONString(要转换的对象);
案例:
Book b = BookDao.find();
String JSONString(b);
System.out.println(json);
2.2.2 JSON字符串转换为对象
windows安全中心无法打开步骤:
1.引⼊JAR包
2.在需要转换Java对象的位置,编写如下代码:
2.类型对象名=JSON.parseObject(JSON字符串,类型.class);
或 List<;类型> list=JSON.parseArray(JSON字符串,类型.class);
案例:
String json ="{\"id\":1,\"name\":\"⾦苹果\",\"author\":\"李伟杰 \",\"info\":\"嘿嘿嘿嘿嘿嘿\",\"price\":198.0}";
Book book = JSON.parseObject(json, Book.class);
python请求并解析json数据System.out.println(book);
参考:wwwblogs/jajian/p/10051901.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。