JSON解析
一、解析前先简单介绍一下JSON
1、json的格式:
1.对象格式:用一对大括号扩住,一对大括号就代表一个JSON对象例:
{
"name" : "张三",
"age" : 18
}
2.数组格式:用中括号扩住,一对中括号就是一个数组。例:
[元素1,元素2,元素3,.....]
3.JSON对象和数组是可以相互嵌套的。例:
{
{
"name" : "张三",
"age" : 18,
"people" : ["张三","李四",{
"name" : "王五",
"age" : 20
},2],
"student" : {
"name" : "王二",
"age" : 19
}
}
二、JSON解析的两个工具类
1、Gson类,是Google提供的用于解析JSON的工具类。Gson的使用,首先需要去官方下载Gson的jar包下载地址:https://github.com/google/gson/在把下载好的jar·包导入Java项目里。
导入jar包具体步骤如图所示:
1.先创建一个lib文件夹
2.把下载好的Gson.jar复制到lib文件夹下
3.导入jar包
4.先点Apply,再点OK。
5.jar包导入成功如图所示,可以点开。
2、Gson的使用
先创建一个Gson对象,再用Gson对象调用Gson提供的两个方法,一、类转JSON串格式 toJson(类对象),二、JSON串转类fromJson(json串,类.class)
1.类转JSON代码如下:
public class JsonDemo {
public static void main(String[] args) {
//创建Fruit类的对象
Fruit fruit = new Fruit("苹果","红色");
//创建Gson对象并调用toJson方法把Fruit对象传入
String s = new Gson().toJson(fruit);
System.out.println(s);
}
static class Fruit{
private String name;
private String colour;
public String getName() {
return name;
}
@Override
public String toString() {
return "fruit{" +
"name='" + name + '\'' +
", colour='" + colour + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public Fruit() {
}
public Fruit(String name, String colour) {
this.name = name;
this.colour = colour;
}
}
}
结果如图:
2、JSON转类,代码如下:
public class JsonDemo1 {
public static void main(String[] args) {
//写一个JSON串
String s = "{\"name\":\"苹果\",\"colour\":\"红色\"}";
//创建Gson对象并调用fromJson方法把JSON串和要转换的类传进去,返回一个class类型
Fruit fruit = new Gson().fromJson(s,Fruit.class);
System.out.println(fruit.getName());
}
static class Fruit{
private String name;
private String colour;
public String getName() {
return name;
}
@Override
public String toString() {
return "fruit{" +
"name='" + name + '\'' +
", colour='" + colour + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public Fruit() {
}
public Fruit(String name, String colour) {
this.name = name;
this.colour = colour;
}
}
}
运行结果如下:
以上就是Gson常用的两个方法,还有其他方法感兴趣的可以自己试试,下面我们在说一下JSON解析的另一个工具类
2、FastJson类,这个是由阿里提供的JSON解析工具类。
1.首先需要下载一个fastJSON的jar包 下载地址:https://github.com/alibaba/fastjson。
2.然后导jar包和上面Gson的导入方法一样。
3.这个类也是提供了一个类转JSON的方法toJSONString(类)方法和parseObject(json串,类.class)方法
fastjson和gson的区别是fastJSON提供的是静态方法直接用类名(JSON)调方法就行不用创建对象
例子:类转JSON代码如下:
public class JsonDemo2 {
public static void main(String[] args) {
Fruit fruit = new Fruit("苹果","红色");
//直接类名JSON调用方法
String s = JSON.toJSONString(fruit);
System.out.println(s);
}
static class Fruit{
private String name;
private String colour;
public String getName() {
return name;
}
@Override
public String toString() {
return "fruit{" +
"name='" + name + '\'' +
", colour='" + colour + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public Fruit() {
}
public Fruit(String name, String colour) {
this.name = name;
this.colour = colour;
}
}
}
运行结果如图
2.JSON串转类代码如下:
public class JsonDemo3 {
public static void main(String[] args) {
String s = "{\"colour\":\"红色\",\"name\":\"苹果\",\"shuliang\":[1,2,3,4]}";
Fruit fruit = JSON.parseObject(s, Fruit.class);
//获取类里的数组
String[] shuliang = fruit.getShuliang();
//遍历数组
for (String s1:shuliang) {
System.out.println(s1);
}
}
static class Fruit{
private String name;
private String colour;
private String[] shuliang;
public String[] getShuliang() {
return shuliang;
}
public void setShuliang(String[] shuliang) {
this.shuliang = shuliang;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "fruit{" +
"name='" + name + '\'' +
", colour='" + colour + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public Fruit() {
}
public Fruit(String name, String colour) {
this.name = name;
this.colour = colour;
}
}
}
运行结果如图:
以上就是JSON的两种解析方式Gson和FastJson。